美文网首页
this指向的问题(秒懂-简单又权威)

this指向的问题(秒懂-简单又权威)

作者: 这样你就找不到我了 | 来源:发表于2022-03-19 20:12 被阅读0次

关于ES6中this指向的问题,搜索了一些视频和文字教程,看得我自己云里雾里。

遂翻红宝书第四版至300页,原来这么简单。

总结为两句话:
1, 标准函数this引用的是把函数当成方法调用的上下文对象
2, 箭头函数this引用的是定义箭头函数的上下文(call 等方法无法改变其指向)

再加一句吧:

  1. 闭包里函数的this在非严格模式下指向window,严格模式下指向undefine

原文:


《javaScript高级程序设计》第四版P300.jpg

来举例子:

var name = 222;
var a = {
  name: 111,
  say: function () {
    console.log(this.name);
  },
};

var fun = a.say;
fun(); //222   因为fun()的上下文是window
a.say(); //111 因为这里是a才是调用say()的上下文对象,所以this指向a

var b = {
  name: 333,
  say: function (fun) {
    fun();
  },
};

b.say(a.say); //222 函数中的函数,this指向window(非严格模式)
b.say = a.say; //这样就不是闭包啦,this指向重新变成了调用它的上下文对象,也就是b
b.say(); //333

相关文章

网友评论

      本文标题:this指向的问题(秒懂-简单又权威)

      本文链接:https://www.haomeiwen.com/subject/ncjndrtx.html