是否有任何瀏覽器限制或阻止我做任何其他的問題:在調用apply之前是否需要將參數轉換爲Array?
fn.apply(this, arguments);
與:
fn.apply(this, Array.prototype.slice.call(arguments));
我知道apply
需要一個「真正的」 Array
作爲第二個參數,而是傳遞一個爭論收集似乎同樣有效。要麼...?
是否有任何瀏覽器限制或阻止我做任何其他的問題:在調用apply之前是否需要將參數轉換爲Array?
fn.apply(this, arguments);
與:
fn.apply(this, Array.prototype.slice.call(arguments));
我知道apply
需要一個「真正的」 Array
作爲第二個參數,而是傳遞一個爭論收集似乎同樣有效。要麼...?
根據該MDN,它「調用給定爲一個數組(或類似物體的陣列)設置該值和參數的一個函數」。鑑於arguments
是一個類似數組的對象,所以在使用它時不應該有任何限制。
實際上,description明確表示arguments
是一個有效的參數。
只有Firefox是已知接受陣列狀物體爲Function.prototype.apply()
第二個參數。我會在通過arguments
之前謹慎行事。
我也這麼認爲,但我一直看到'Array.prototype.slice.call(參數)'這麼多的「專業」的代碼示例,我想必須有一個正當的理由...... – David
,如果你想這是必要的對它們進行數組操作,比如追加,移位或推送,所以我認識的大多數開發人員比其他任何人都更習慣於這種習慣。 – saml