わかっているように、関数の引数を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
誰でもこの現象が起こっている理由を教えてください。それは数字キーだけを見て、空の配列を作成し、それを数値インデックスに変換する??????
非数値キーを含むlengthプロパティは、未定義としてプッシュされます。私は正しいですか? – Vino
@Vino - 欠落している数値プロパティは、値が何であるかにかかわらず 'undefined 'としてコピーされます。 – jfriend00
便利なクイックインフォメーションありがとう! – Vino