美文网首页
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