关于js函数调用方法call(this)的简单分析

今天发现了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是不一样的
原文地址:https://www.cnblogs.com/yangnansuper/p/13541508.html