不懂就问,关于函数赋值的问题

在js高级程序设计中,有一个这样的例子:

(object.getName=object.getName)() //此时内部的this不是指向object而是window

书中原话是,这个赋值表达式的值是函数本身,所以this的值得不到维持。
个人猜想:然倒是因为赋值操作会断开引用?

向各位请教正确解答


梦里花落0921
浏览 485回答 2
2回答

SMILET

不考虑call、apply、bind等特殊情况,正常情况下只有o.m()这种方式会传递o作为m的this。而例子中的赋值表达式乍一看跟这种形式很像,但是实际上并不是。整个表达式的结果是getName这个函数的引用,在表达式的求值结果中并没有object。把这个代码改写一下,大概相当于下面这样:(t=object.getName, object.getName=t, t)()最终调用的是t这个函数引用,并没有object
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript