ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 配列の名前付きプロパティがその長さに影響しないのはなぜですか?
配列内の名前付きプロパティがオブジェクトのように動作する理由
JavaScript を使用すると、配列を含むさまざまなデータ構造にプロパティを柔軟に割り当てることができます。配列は従来、数値インデックス付きの要素を保持しますが、名前付きプロパティを追加してオブジェクトに似せることもできます。
上記の例では、両方のコード スニペットが配列内の名前付きプロパティに値を割り当てています。
var myArray = Array(); myArray['A'] = "Athens"; myArray['B'] = "Berlin"; var myObject = {'A': 'Athens', 'B':'Berlin'};
両方のメソッドは同等に見え、同じ型のオブジェクトを生成しますが、根本的な違いがあります。
配列プロパティとオブジェクトのプロパティ
配列は数値インデックス付きデータ用に設計されており、数値以外のキーを追加すると、意図した機能が中断されます。名前付きプロパティはシームレスに追加されるように見えますが、実際には配列内の要素としてではなく、配列オブジェクト上のプロパティとして存在します。
配列長への影響
この不一致は、配列内の要素数を返す配列の長さプロパティをチェックすると明らかです。名前付きプロパティを配列に追加しても、配列の長さは変更されません。たとえば、次のコードでは:
var myArray = Array(); myArray['A'] = "Athens"; myArray['B'] = "Berlin"; alert(myArray.length);
配列には要素が追加されておらず、配列オブジェクトにはプロパティのみが追加されているため、アラートには「0」が表示されます。この動作は、数値以外のキーを追加しても長さプロパティに影響しないオブジェクトとは異なります。
したがって、名前付きプロパティを配列に追加すると便利かもしれませんが、従来のプロパティとの制限と潜在的な違いを理解することが重要です。オブジェクトの動作。数値以外のインデックス付きデータの場合は、適切な機能を確保し、予期しない結果を回避するために、代わりにオブジェクトを使用する必要があります。
以上がJavaScript 配列の名前付きプロパティがその長さに影響しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。