在看高程不知道第几遍的时候,一直以为以前自己理解的东西,突然却懵逼了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就改变各位有更好的理解和看法吗?
5 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
这个怎么说呢?
拿第一个和第三个比:
调用的时候,都是在window下执行的!!!都是在window下执行的!!!都是在window下执行的!!!
第一个 是window的obj的getName。。。。他从window跑到了obj对吧。他的爸爸是谁?是window的obj 对吧。
而第三个 赋值的时候。。window的obj的getName = window的obj的getName,赋值操作是先找到左边的obj的getName。。好了。貌似跑到了obj。。。但是他右边是谁是window的obj的getName...所又他要跑回window...
等号左侧的getName和 右侧的getName 不想等。
所以共同的爸爸就是祖先window
隔江千里
TA贡献1906条经验 获得超10个赞
添加回答
举报
0/150
提交
取消