今天发现了this的一个奇妙作用,那就是在call中和apply中指代的都是全局。见下代码:

 

var money= "想要拥有一个亿"
       var obj1={
            money:"我拥有一个亿",
            foo:function() {
                console.log(this.money);
            }
       }
       var obj2={
           money:"同桌拥有一个亿"
       }
    obj1.foo(); //我拥有一个亿
    obj1.foo.call(this) //你猜是什么?? 刮开图层查看答案
obj1.foo.call(obj2) //同桌拥有一个亿

obj1.foo() 指向obj1下的foo,因此直接打印“我拥有一个亿”。

call函数修改函数内部this值指向

obj1.foo.call(this) 由于有了call,因此指向全局,将打印“想要拥有一个亿”

obj1.foo.call(obj2) ,由于有了call,因此指向obj2,将打印“同桌拥有一个亿”

 

 

 

this
this的指向跟函数调用有关
有,this指向该对象
没有,
Nodejs环境中 this --> global对象
浏览器环境中 this --> window对象
nodejs中的this和在浏览器中javascript中的this是不一样的

 

相关文章:

  • 2023-02-12
  • 2022-12-23
  • 2022-02-27
  • 2021-12-28
  • 2021-11-06
  • 2021-12-06
  • 2022-12-23
  • 2021-08-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-06
  • 2021-08-29
  • 2022-02-03
  • 2021-11-18
相关资源
相似解决方案