在js高级程序设计中,有一个这样的例子:(object.getName=object.getName)() //此时内部的this不是指向object而是window书中原话是,这个赋值表达式的值是函数本身,所以this的值得不到维持。个人猜想:然倒是因为赋值操作会断开引用?向各位请教正确解答
2 回答
SMILET
TA贡献1796条经验 获得超4个赞
不考虑call、apply、bind
等特殊情况,正常情况下只有o.m()
这种方式会传递o
作为m
的this
。
而例子中的赋值表达式乍一看跟这种形式很像,但是实际上并不是。整个表达式的结果是getName
这个函数的引用,在表达式的求值结果中并没有object
。
把这个代码改写一下,大概相当于下面这样:
(t=object.getName, object.getName=t, t)()
最终调用的是t
这个函数引用,并没有object
添加回答
举报
0/150
提交
取消