我一直在閱讀一本書,在回答有關push.apply的一個非常具體的問題時需要幫助。push.apply方法和這個參數
function SpecialArray(){
var values = new Array();
values.push.apply(values, arguments);
values.toPipedString = function(){
return this.join("|");
};
return values;
}
var colors = new SpecialArray("red","blue","green");
console.log(colors.toPipedString());
我理解這段代碼做什麼,但我有些失落於:
values.push.apply(values, arguments);
從我的理解。這使用push和apply將函數參數中的數組添加到values數組的0,1和2中。我不明白的是這個論點。
我知道改變這個值會將它指向另一個對函數有用的對象。在這種情況下,我嘗試將值更改爲其他值,因爲我只將參數數組推入新數組,並且不需要更改此指針,但是在結果中除了值以外的任何內容都會留空白?
有人可以向我解釋爲什麼改變thisArg會產生空白? values.push應該已經表明我特別需要它在值數組中,並且只使用apply arrArg將數組連接到另一個類似於concat方法的數組中。
當你進入'.apply()'時,'.push'方法已經失去了與'values'的關係。請記住,只有當你調用一個函數時纔會設置this。但是你不直接調用'.push()'。你正在調用'.apply()',它爲你調用'.push()'。所以你需要告訴'.apply()'這個值應該是你告訴它爲你調用的方法。 –
...'.apply()'方法中的'this'值將是'.push()'方法,它是通用的。它與「價值」沒有永久的關係。 –