我會盡力從我個人理解解釋。使用apply的語法是:
fun.apply(thisArg, [argsArray])
此處,thisArg指出將應用於函數的上下文。 (例如,這個)。 [argsArray]是該函數的參數數組。
當你這樣做:
addToThis.apply(obj,arr)
你基本上傳遞arr=[1,2,3]
作爲參數傳遞給你的addToThis功能。因此,a
變成1,b
變成了2,如果你的函數定義中有一個c
,那就是3 ..等等,直到達到你的數組長度。
請參閱this小提琴,這裏console.log(c)
打印出數組中的第三個元素。但是,如果你寫這個代碼:
var obj = {num:2};
var addToThis = function(a,b,c,d){
console.log(a); //prints first element in array
console.log(b); //prints second element
console.log(c); //prints third element
console.log(d); //prints undefined because there is no forth element
};
var arr = [1,2,3];
addToThis.apply(obj,arr);
希望這會有所幫助。
'apply'將數組內容作爲單獨的參數發送 - 所以'a'將被設置爲'1',並且'b'被設置爲'2'。你期望發生什麼? – Shadow