1
的內部工作正如我們所知,我們在像將函數參數轉換爲Array的場景中使用Array.prototype.slice.call()。現在,如果我試圖做一些其他的對象,其中包含鍵值以數字方式迭代,以及非數字鍵值,它省略它(非數字)。以下是代碼。Array.prototype.slice.call()
var myobject ={ // array-like collection
length: 4,
'0': 'zero',
'1': 'one',
'2': 'two',
'3': 'three'
}
var myarray = Array.prototype.slice.call(myobject) // returns myobject as a true array: ["zero", "one", "two", "three"]
相同的流程,如果即時通訊只使用一個對象只有鍵值如0,1,2,3 ...空數組返回。以下是代碼。
var myobject2 ={ // array-like collection
'1': 'one',
'2': 'two',
'3': 'three'
}
var myarray2 = Array.prototype.slice.call(myobject2) //returns empty array
可有人請解釋爲什麼會這樣????它只看數字鍵,創建空數組並將其轉換爲數字索引嗎?
提供的長度屬性與非數字鍵將被推送爲未定義。我對麼? – Vino
@Vino - 任何缺少的數字屬性將被複製爲「undefined」,因爲這就是它們的值。 – jfriend00
有用的快速信息。謝謝! – Vino