在看高程不知道第几遍的时候,一直以为以前自己理解的东西,突然却懵逼了
var name='thi window';
var obj = {
name:'the obj',
getName:function(){
console.log(this);
console.log(this.name);
}
}
obj.getName();
(obj.getName)();
(obj.getName=obj.getName)();
第三个输出的是打印the window
测试过比如var ty;
(ty = obj.getName)()//the window
高程那边解释是先复制在执行,改变了this的指向,
测试也确实是这么回事,如果直接调用执行this是obj的
只要赋值在执行为撒指向就改变了呢?
假如分开写的话能理解
比如 var ty = obj.getName;
ty();//the window
这样写能理解,但是那个括号赋值并执行有点理解不过来啊,我也只能强制自己记住如果赋值在执行this就改变
各位有更好的理解和看法吗?
赋值的时候把函数赋值给变量,但是函数的this没办法赋值过去啊,所以再调用时,默认就是一个独立的函数调用,this就丢失了!
我觉得这个更简单直接一些:http://www.cnblogs.com/xiaohu...