3
叫時請考慮以下變量:爲什麼括號保持這種在同一份聲明中
var obj = {
value : 'from object',
getValue : function() { return this.value; }
};
var value = 'from global';
現在,obj.getValue()
評估爲'from object'
。如果我得到一個引用只是getValue函數,並調用它:
var f = obj.getValue;
f();
˚F評估爲'from global'
。
我的問題是爲什麼(obj.getValue)();
返回'from object'
?
我原以爲第一組圓括號會評估爲對getValue函數的簡單引用,然後在調用該結果時,this
將是全局上下文。爲什麼解釋者會認爲這是對象的調用?
我明白了。我的問題是爲什麼'(obj.getValue)()'保持obj範圍? – Patrick
問題是爲什麼'(obj.getValue)()'充當'obj.getValue()',而在詞法上它看起來更像'f = obj.getValue; f()的' – wostex