this 指向
首先 this 是函数执行上下文中的一部分,所以 this 是在函数执行的时候才确定的
常见的 this 指向
-
全局作用域下,this 指向的是 window,严格模式时 this 指向 undefined
-
定时器中的回调函数中 this 指向 window,原因是因为定时器是 window 上的方法
-
立即执行函数中 this 指向的是 window
-
当函数作为对象的方法调用的时候,即函数调用前面有
.
那么 this 指向的是最近的调用它的对象,没有.
的时候就指向 window -
构造函数中的 this 指向的是使用 new 创建的新对象
-
事件处理函数中的 this 指向的是绑定该事件的元素,但是在 IE 中使用 attachEvent 的方式绑定的事件处理函数中的 this 指向的是 window
-
call、apply、bind 会改变 this 的指向,使得 this 指向传入的第一个参数
- 传入的第一个参数是 null/undefined 时,this 会指向 window
- 传入的第一个参数是原始类型的时候,会调用原声构造函数将其转换为对应的包装对象
-
箭头函数中的 this 指向
- 箭头函数不会绑定自己的 this,它的 this 由定义它所在的地方的外部函数中的 this 决定;所以箭头函数中的 this 在词法分析阶段就已经确定。call、apply、bind 也无法改变箭头函数中的 this 指向,会忽略传入的第一个参数
箭头函数的特点
-
箭头函数不绑定自己的 this
-
箭头函数不能用作构造函数,所以通过 new 来调用的时候会报错
-
箭头函数没有 arguments(使用 rest 参数代替)、new.target、super
-
箭头函数无法通过 apply、call、bind 来改变 this 指向,会忽略传入的第一个参数
-
不能作为 generator 函数使用
-
箭头函数没有原型对象, 箭头函数的 prototype 属性为 undefined;但是 typeof 一个箭头函数返回的是'function'
网友评论