箭头函数中的this

先来简单理解一下什么是this?

this表示当前对象,this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。
也就是说this的最终指向的是那个调用它的对象

在严格模式中this默认指向undefined。
匿名函数的执行环境具有全局性,因此其this对象通常指向window

image
例:
var a = 'window'

obj = {
   a:'obj1',
   func:function(){
   console.log(this.a);
}
obj2

obj.func() // 'obj1'  func函数被obj对象调用,所以this表示的是obj对象
var otherObj = obj.func  //将func函数赋给新的变量
otherObj() // 'window'   func函数没有显性地被任何对象调用,因此this默认等于window对象
otherObj.call(obj2) //'obj2'   call方法将this引用到obj2对象上,因此this等于obj2

箭头函数

箭头函数没有自己的this,因此它们的this是引用外层代码块的this。在初始化的时候this的指向就被固定了,因此它是静态的。

  • 不可以当作构造函数,也就是说,不可以对箭头函数使用new命令,否则会抛出一个错误。

  • 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

  • 不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

未完待续~~

posted @ 2021-05-31 21:11  strive、x  阅读(198)  评论(0)    收藏  举报