2014-10-06 45 views
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解決如何解決錯誤的理解?

(編輯使我的困惑更清晰的原因)

回答

相關問題