這取自John Resig的學習高級Javascript#25,稱爲更改函數的上下文。在JavaScript中更改函數的上下文
1)在行fn() == this
這是指什麼?它是指這裏面的功能,它說這個返回? 2)雖然我理解最後一行(將函數附加到特定對象)的目的,但我不明白代碼如何執行該操作。單詞「call」是一個預定義的JavaScript函數嗎?用通俗的語言,請解釋「fn.call(對象)」,並明確告訴我,對象(object)
是否與var object
是同一個對象。 3)。功能分配給對象後,您是否會通過編寫object.fn();
來調用該功能?
var object = {};
function fn(){
return this;
}
assert(fn() == this, "The context is the global object.");
assert(fn.call(object) == object, "The context is changed to a specific object."
關於答案中的第一段(即調用和對象),是否總是這種情況或僅僅是這個特定的代碼?非常感謝您的幫助。 – mjmitche 2011-03-17 04:52:05
當使用'call'或'apply'調用一個函數時,第一個參數將始終決定該函數內的'this'值。情況總是如此 – Anurag 2011-03-17 04:57:48