我是從Mozilla開發者網絡閱讀這段代碼:瞭解函數參數使用切片
function list() {
return Array.prototype.slice.call(arguments);
}
var list1 = list(1, 2, 3); // [1, 2, 3]
函數內部的線我感到困惑,爲什麼我使用call
沒有指定對象服務作爲this
?
如果arguments
是this
是這種情況下,那麼我沒有任何參數傳遞給slice
函數,對吧?
如果我把一些隨機元素作爲this
我得到一個空數組,像這樣:
return Array.prototype.slice.call([], arguments);
我知道我誤解的東西,但什麼? :)
在此先感謝!
這是一種常見的將類似數組*的對象轉換爲真實數組的方法。 – 2013-02-22 22:16:56
確實是這樣,我的問題是切片,現在我知道我可以不傳遞任何東西給函數。 ;) – Kaeros 2013-02-22 22:18:53
@FelixKling我認爲OP知道,因爲JS片段是來自MDC文檔的。 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice#Array-like – 2013-02-22 22:19:40