当前位置: 首页 > 网络应用技术

JavaScript这一点JavaScript,您不知道

时间:2023-03-06 20:28:16 网络应用技术

  JavaScript对此主题的理解的理解永远不会过时。鉴于在JavaScript中进行这种coquettish操作的方式,本文将尝试拆卸和分析并烹饪它。

  含义是:与当前执行上下文有关。

  这是为了找出最近的对象,即带有当前上下文的上下文对象。

  换句话说,当调用函数时称呼该对象与对象相关时。

  由于在水塔附近被称为第一个月,全球物体是遥远的物体作为备用轮胎的存在,可以为语言边界做护城河的底部。

  在正常情况下,这指向默认的全局对象。那么默认绑定是什么?

  它可以在受欢迎程度上被理解为当调用函数时未调用函数的场景。由于该函数在没有前缀对象或函数的情况下被调用,而无需特定的绑定,因此这将指向此时。

  在非刻痕模式下,不同终端的全局变量对象是不同的:

  在严格的模式下:

  ?在非刻板模式下

  在上面的栗子中,无论函数声明在何处和在哪里调用,因为在调用函数时未在正面指定函数,这都指向这种情况下的全局对象窗口。

  但是,应该注意的是,在严格的模式下,这种绑定默认情况下将指向不确定的。

  ?在严格的模式下,看一些栗子,然后在心中写下答案

  建议获取答案并查看以下内容,

  来一起数,“花chipmilet ...” ......................................

  ???????q ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

  好吧,来看看正确的输出,都回答了?

  可以看出,在函数内部使用严格的模式声明之后,这一点要未定义,与此同时,宣布函数中的严格模式仅与函数中定义的变量有关,该函数无关使用调用的外部功能。

  什么是隐含的约束力?

  :如果有一个对象将他呼召在功能前面,那么这将被隐式绑定到此呼叫对象。

  因此,隐式绑定的关键点是谁是所调用函数的对象。简单地说,要找到该功能前面的点,以及谁是由此绑定的对象。

  ?对于栗子:

  当函数被隐式绑定时,如果函数调用时存在多个对象,则指向最接近您的对象,即,以前的对象是谁,这一点是谁。

  因此,问题是,如果您删除Boss2上的模式有什么区别?

  ?对于栗子:

  答案是输出未定义,因为目前,由于Boss1只是Boss2的属性,因此Boss1和Boss2的原型链不同,而不是父亲的关系。因此,当Boss2上没有模式属性时,返回了未定义的属性。请注意不要与域链混淆。

  ?以下示例应小心。你能提出答案吗?

  答案是Boss1模式和FN模式,您对吗?

  它涉及原始链和范围链之间的一些差异。基本上,这里将没有分析。请检查遗漏并补充它们。

  我相信,细心的同学发现上面的示例具有可以分配给变量然后调用的函数。当函数分配再次调用时,最初的指向将改变,并且该函数的此功能不会指向它的原始对象,导致无形的结合损失问题。

  引起无形损失的常见方法:

  ?对于栗子:

  上面提到的案例boss1copy和boss2.呼叫函数分配变量的情况

  ?对于栗子:

  在上面的示例中,我们通过BOSS1.FN,这是在EXCE中执行它的函数。这只是一个简单地传递函数的函数。这与该函数无关。目前,这指向原始对象将损失发送到窗口。

  可以看出,隐藏的损失本质上是由功能分配引起的。在函数分配到变量或其他函数人参FN之后,这将指向调用FN时最接近的对象。

  :指通过object.prototype.call,object.prototype.apply,object.prototype.bind方法更改此方向的方向。

  在这里,我将明确地融入::

  接下来,查看一个示例,分别通过呼叫,应用和绑定来更改函数日志的此方向。

  ?对于栗子:

  在JavaScript中,当调用函数时,我们被用来调用函数调用。目前,该功能处于被动状态。绑定,呼叫和应用允许函数我们对写作方式进行调用。

  请注意,当使用此方法(例如band,呼叫并应用)以更改此方向时,该点对参数提供了零或固定效果,这将指向全局对象。

  ?对于栗子:

  还值得注意的是,绑定将在显式更改后返回新的绑定函数(BF)。绑定函数是一个外来的函数对象。对绑定函数进行表达通常会导致包装函数的执行。

  此外,简单地添加了呼叫,应用和绑定之间的差异:

  呼叫和应用之间的主要区别在于参数形式不同。就参数而言,呼叫的性能高于应用程序,因为应用程序还分析了在执行过程中又一步的阵列。

  严格来说,JavaScript中的构造函数只是一个通用函数,称为关键字新的。这不是一堂课。事件不是一个实例,只是为了促进理解习惯。

  一种更容易忽略以绑定此方向的方法是使用新方向。当我们有一个函数时,我们将自动绑定在新对象上,然后调用此函数。

  因此,最终函数的新作用大致分为三个步骤:

  我们称其为构建此过程。

  ?那么,新建在构造电话时会产生什么影响?请参阅栗子:

  当功能是函数时,这将与函数本身绑定。即使函数更改了此方向,关键字新仍然将其指向函数本身。新绑定与显式绑定不兼容。

  ES6的箭头函数是另一种存在。你为什么要说一个人?这是因为箭头函数中的此不适用于上述少数绑定规则。

  确切地说,箭头函数中没有这个。箭头函数的此指向外部范围的外部范围,该范围指向该函数的外部范围或函数,而箭头函数中的则指向。

  因为箭头函数中的此始终指向当前的词汇此(词汇此),因此可以在编码代码时确定它。没有其他此绑定方法可以涵盖。

  这样做的优点是使当前使用回调函数范围的范围进行此范围,而不必害怕引起混乱。

  因此,对于箭头函数,只需查看其创建位置即可。

  ?可疑吃柔软的米饭,一点也不硬,让我们看一下栗子:

  第一次将其绑定并返回Boss1.Retarrow的箭头功能之后,我们是否将其更改为点?

  如前所述,箭头函数的此取决于该场的外部范围。执行时的BOSS1.RETARROW函数指向BOSS1,因此箭头函数的此也指向BOSS1。添加,箭头函数,这也具有功能,也就是说,一旦箭头函数的绑定成功,不能再次修改,这意味着有点困难。

  当然,此箭头功能并非真的无法修改它。我们知道,箭头函数的这一功能是从上层范围中找到的,例如范围范围的继承,因此我们可以修改外层函数this.boss1.retarrow.call.call.call.call.call(boss2)()()()()()()()()()()()()()()()()())(boss2)()()(boss2)()()(boss2)()()()(boss2)()()(boss2)()()(boss2)()(成功地将其指向Boss2。

  在这一点上,总结了所有这些绑定方案。如果您练习了一个例子,我相信您现在很聪明,现在您对此的理解必须更高。

  然后,通过本文,我们了解到这与在严格模式和非刻痕模式下的默认绑定不同。

  我也知道有几种隐式触发条件和隐藏损失的情况。

  与无形的无形结合相比,我们还了解了显式结合和硬结合,并提到在非肌量模式中,当结合指向无效或不确定时,这将指向整体情况。

  然后重新认识到新的纽带。

  最后,我们了解了在未连接的箭头函数中的这种绑定,并了解到箭头函数的这一功能是由该外部场的决定指向的,并且一旦结合成功就无法修改的特性。。

  好吧,如果内容有问题,请纠正我,希望您能受益匪浅?