this
关键词是JavaScript
之中最复杂的机制之一。
关于 this
和词法作用域的机制不同,this
的指向是“动态”的,它是函数在调用时执行的绑定,指向什么决定于函数在哪里调用。
全面解析
归纳总结为4条:
- 使用
new
调用时,绑定到新创建的对象。 - 用
call()
或者apply()
(以及bind()
)方法调用时,绑定到指定的对象。 - 作为对象的方法调用时,指向该对象本身。
- 默认情况:绑定到
Window
对象,在严格模式下绑定到undefine
.
ES6 箭头函数中的 this
其实也并不复杂,只是在一个用词法作用域定义函数的语言里面又使用了“动态”让人感到些许困惑...
所以在ES6
之的箭头函数使用了与之前函数不同的机制:
函数体内的this
对象就是函数定义时所在对象,不是函数使用时所在的上下文环境。
网友评论