资讯专栏INFORMATION COLUMN

如何要判断一个运行中函数的 this 绑定

yedf / 1908人阅读

摘要:来自你不知道的如果要判断一个运行中函数的绑定,就需要找到这个函数的直接调用位置。中的箭头函数并不会使用四条标准的绑定规则,而是根据当前的词法作用域来决定,具体来说,箭头函数会继承外层函数调用的绑定无论绑定到什么。

来自你不知道的JavaScript

如果要判断一个运行中函数的 this 绑定,就需要找到这个函数的直接调用位置。找到之后
就可以顺序应用下面这四条规则来判断 this 的绑定对象。

由new调用?绑定到新创建的对象。

由call或者apply(或者bind)调用?绑定到指定的对象。

由上下文对象调用?绑定到那个上下文对象。

默认:在严格模式下绑定到undefined,否则绑定到全局对象。
一定要注意,有些调用可能在无意中使用默认绑定规则。如果想“更安全”地忽略 this 绑 定,你可以使用一个 DMZ 对象,比如 ø = Object.create(null),以保护全局对象。

ES6 中的箭头函数并不会使用四条标准的绑定规则,而是根据当前的词法作用域来决定 this,具体来说,箭头函数会继承外层函数调用的 this 绑定(无论 this 绑定到什么)。这 其实和 ES6 之前代码中的 self = this 机制一样。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83481.html

相关文章

  • 理解JavaScript核心知识点:This

    摘要:关键字计算为当前执行上下文的属性的值。毫无疑问它将指向了这个前置的对象。构造函数也是同理。严格模式无论调用位置,只取显式给定的上下文绑定的,通过方法传入的第一参数,否则是。其实并不属于特殊规则,是由于各种事件监听定义方式本身造成的。 this 是 JavaScript 中非常重要且使用最广的一个关键字,它的值指向了一个对象的引用。这个引用的结果非常容易引起开发者的误判,所以必须对这个关...

    TerryCai 评论0 收藏0
  • this是什么以及如何判断

    摘要:这也是为什么在后,诸如这类写越来越少的原因定时器对的影响调用的代码运行在与所在函数完全分离的执行环境上。 总结下对this的学习与理解 转眼前端的学习已有一年,日常写代码中经常碰到this这个东西。特别是在用vue的时候,this还是有点多的,哈哈。在翻阅了一部分书籍和一堆大佬的博客后,决定总结一下这些东西,下面谈谈我对this的一些理解,如果有错误,欢迎大家批评指正。如果可以给你带来...

    Freelander 评论0 收藏0
  • 如何一个实用bind?

    摘要:方法创建一个新的函数当被调用时,它的关键字被设置为提供的值。语法简单地看一下这些参数的含义当绑定函数被调用时,该参数会作为原函数运行时的指向当使用操作符调用绑定函数时,该参数无效。结尾文章很简短,知道怎么实现一个原生的就行。 前言 这是underscore.js源码分析的第五篇,如果你对这个系列感兴趣,欢迎点击 underscore-analysis/ watch一下,随时可以看到动态...

    zhaofeihao 评论0 收藏0
  • 如何一个实用bind?

    摘要:方法创建一个新的函数当被调用时,它的关键字被设置为提供的值。语法简单地看一下这些参数的含义当绑定函数被调用时,该参数会作为原函数运行时的指向当使用操作符调用绑定函数时,该参数无效。结尾文章很简短,知道怎么实现一个原生的就行。 前言 这是underscore.js源码分析的第五篇,如果你对这个系列感兴趣,欢迎点击 underscore-analysis/ watch一下,随时可以看到动态...

    Prasanta 评论0 收藏0
  • 小菊花课堂之JavaScript关于this

    摘要:另外,的绑定和函数声明的位置没有任何关系,之取决于函数的调用方式。请看下面代码这样,我们就可以在调用的时候强制把它的绑定到上绑定在传统的面向类语言中,使用初始化类时会调用类中的构造函数。 关于this 上一章我们讲了关于作用域和闭包的相关知识,现在开始新一轮的学习,那就是JavaScript中最复杂的机制之一---this关键字。它是一个很特别的关键字,被自动定义在所有函数的作用域中。...

    CHENGKANG 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<