2012-12-26 51 views

回答

15

.apply()有兩個參數:

fun.apply(thisArg[, argsArray]) 

你傳遞a爲您this對象,b爲您的參數列表,讓你的代碼實際上調用.push()b作爲參數傳入的元素:

var a = [1, 2, 3]; 
a.push(4, 5, 6); 

現在,.push()只是改變你的原始數組。

+0

@NULL:你爲什麼這麼說? – Blender

+0

它的確如此。我有一個小腦袋,認爲推回來了一個新的陣列。但是,我在代碼中看到了這一點,我很困惑'Array.prototype.push.apply(a,b)'。你爲什麼要這樣做,而不僅僅是'a.push(b)'。我認爲它一定在做一些不同的事情。 –

+0

@NULL:這是一個實現細節。這不是你實際可以解釋的。 – Blender

4

使用this。試圖描述它看到這個customPush功能。

function customPush() { 
    var i = 0, 
     len = arguments.length; 

    for(; i < len; i++) { 
     this[this.length] = arguments[i]; 
    } 
}; 


var a = [1,2,3]; 
var b = [4,5,6]; 
customPush.apply(a,b);