绑定的基本原理可以大致分为以下四种:
在全局范围中声明的变量与具有相同名称的同名属性(窗口或全局)相同。因为预设绑定关系的函数在普通和未解决的条件下调用时,即函数被调用,如果没有值,则或在此情况下,它将自动自动自动自动。指定到整个区域。
但是,如果将“严格使用”宣布为严格的模式,则最初将其预设到整个地区的行为将被转换为它。
它指的是,即使在全局范围中声明该函数,只要它成为某个对象的参考建议,该函数就包含在该对象中。
白话为:的表示函数执行过程中的“对象”,而不是函数“本身”
您真的了解测试吗?
第一个问题:
它将是多少?
答案是。我知道您可能无法接受,请听我的解释。
如前所述,它表示“属于函数的对象”,对吗?
在上面的示例中,它是函数,也是一个“全局变量”。我相信,与第20天看过这篇文章的人必须非常清楚“全局变量”的定义!
回顾,“全局变量”表示“全局对象的属性”。因此,实际上是。
因此,当圈子里运行非常高兴时,它总是在增加,因为目前实际上是。
从理论上讲,在开始时,五次之后,您将获得结果,并且仍然是一个。
请记住,它表示属于函数的对象,而不是函数本身。
问题2:
我相信,在上一个示例之后,您应该知道的结果应该是!
在此示例中,可以获得它是因为它实际上是定向的。中间不是方向,因此将获得结果。
第三个问题:
在上面的示例中,可以看出,根据“预设结合”的原理,在直接呼叫的情况下,实际方向将在此时间定向,因此结果就是。
当我们指向对象中的此属性时,当我们调用它时,尽管实际上是在调用它,但它会指向对象,因此在此timethat中。
第四个问题:了解隐性约束的原则后,继续查看此变化的版本:
在此版本中,我们声明了另一个变量指向,那么您可以猜测呼叫的结果吗?
答案是。
尽管它似乎是正确的参考,但参考的对象实际上是。
确定这一点的关键不是它所属的对象,而是“呼叫的时间点”。当您通过对象调用方法时,这是该对象(所有者对象)。
补充测试:这在巢返回圈中
在此示例中,将有两次。
原因将在其中打印,因为它被调用。
但是内部将在执行过程中打印。
必须在此处解释两个要点:
换句话说,如果未指定或指定,则是。
与前两个相比,显式绑定要简单得多。简而言之,直接指定此功能可以将其分类为显式绑定的类型。
继续上一个示例,让我们先看看。在上一个示例中,我们使用此变量替换它以获取触发事件的元素。
如果您使用重写:
但是,应该注意的是,无论是使用还是加上无法更改的内容,它都不能用作构造函数。箭头功能很方便且方便。如果需要在您的功能中使用一种情况,则需要注意不要改变人们在不知不觉中被愚弄。
现在,您已经谈到了指定的强制性方法,在阅读“箭头功能”后,您必须谈论它。
假设今天有一个粉丝:这就是这样:
然后我们可以打电话给它。
当然,您可以使用或调用它:
您可能会觉得这很奇怪,看起来没有区别,对吗?这不是您自己吗?但是,如果您遇到一个参数,似乎有些不同。
基本上,他们都要求执行此函数并替换此功能的上下文中的对象中的第一个参数。换句话说,它被迫将某个对象指定为函数的实现。
角色完全相同,差异在传递参数的方式上只有不同:
传递参数的方法是通过“ Funny”分离的,整个数组作为参数传递。另外没有明显的差异。
让此函数在调用之前绑定某个对象,以便无论呼叫如何调用,都可以修复。特别是,它通常在回调函数之类的场景中使用。可以想象它势必首先绑定,然后是需要函数时称为的类型。
上下文中使用的场景是更频繁的更改,并且根据需要呼叫的需要将不同的对象带入函数中。
一个新的对象将是新的,这将指向此时的新对象。将在后续章节中引入构造函数。只要本部分理解这一点,它也可以参考对象本身。
这将不会在整个区域重新定义,并且可以在生成的对象上重新定义(因此他指向应生成的对象)。
示例:这样,当事件触发时,它将是事件的元素,在此示例中。
注意:代表将是“事件的目标”,不是。
但是,如果我们在事件的回调函数中添加Ajax的请求,则根据我们前面提到的内容,默认绑定将指定回调函数。
有一种非常简单的方法来解决此问题,也就是说,通过另一个变量来引用:
除了Ajax的回调函数外,此类型的功能也是一个常见的方案。
基于上面的示例,我们可以简单地总结一个结论:
如此赤裸裸的....下一章将谈论精简版,只有调味料
原始:https://juejin.cn/post/7094811718013960206