今天发现了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是不一样的