プロパティ(つまり、関数オブジェクトでArray.length
名前が付けられたプロパティ)と(つまり、配列オブジェクトのインスタンスで名前が付けられたプロパティ)について少し混乱しています。length
Array
array_instance.length
length
では、この 2 つのプロパティの違いは何でしょうかlength
。また、いつ使用すべきか、使用すべきでないかを教えてください。
編集1:
length
オブジェクトにもプロパティがありますArray.prototype
。とても混乱しています。
編集2
より明確にイメージするために、length
私が見つけたさまざまな特性をここに示します。
編集3
これはコメント欄で私が尋ねたフォローアップの質問の1つですが、この質問はlength
プロパティを完全に理解するために重要だと思うので、メインセクションにコピーして貼り付けました。
フォローアップの質問:
Array.prototype.hasOwnProperty('length')
とArray_instance.hasOwnProperty('length')
を返す場合、 に 1 つ、オブジェクトに1 つ、合計 2 つのプロパティtrue
があり、が を覆い隠していることを意味しますか?length
array_instance
Array.prototype
array_instance.length
Array.prototype.length
ベストアンサー1
関数には.length
、期待する引数の数に対応するプロパティがあります。例:
const unary = (a) => {
}
const binary = (a, b) => {
}
console.log(unary.length);
console.log(binary.length);
したがって、Array コンストラクターには 1 つのパラメーター (つまり、配列のサイズ) が渡されることが想定されているため、Array コンストラクターの長さは 1 になります。
配列オブジェクトには.length
、同じ名前であること以外は無関係なプロパティもあります。このプロパティは、配列の現在のサイズを示します。