0
究竟是JS解析規則,結果如下:爲什麼調用帶圓括號的方法,例如。 (obj.func)(),仍然設置`this`?
比方說,我們有這個功能
getThis = function(){
return this;
}
這些使用「前點」規則如預期的所有工作:
getThis(); //=> Window
obj = {getThis: getThis};
obj.getThis(); //=> obj
getThisTwo = obj.getThis;
getThisTwo(); //=> Window
然而,這令我感到奇怪:
(obj.getThis)() //=> obj ...WAT
我的直覺是,它的行爲完全像第三個例子(getThisTwo
)。即,評估括號中的部分,它返回一個匿名函數,然後調用它。我的期望是this
將是Window
,而不是obj
。
這是一個特例,還是我對this
解決如何解決錯誤的理解?
(編輯使我的困惑更清晰的原因)