ホームページ >ウェブフロントエンド >jsチュートリアル >名前付きプロパティを JavaScript 配列に追加: オブジェクト リテラルとブラケット表記?
配列への名前付きプロパティの追加: JavaScript の癖
JavaScript では、名前付きプロパティを追加する機能など、予期しない方法で配列を操作できます。プロパティをオブジェクトであるかのように扱うことができます。ここで疑問が生じます: 括弧を使用した名前付きプロパティを持つ配列の宣言とオブジェクト リテラルの宣言の間に、根本的な違いはありますか?
短い答えは次のとおりです: はい、違いはあります。
どちらのメソッドも表面的には同様に動作し、typeof() でチェックすると「オブジェクト」タイプを返しますが、根本的な性質が異なります。配列は数値インデックス付きデータを対象としていますが、オブジェクトは数値以外のキーを対象として設計されています。
この違いを説明するには、次の点を考慮してください。
var myArray = Array(); myArray['A'] = "Athens"; myArray['B'] = "Berlin"; alert(myArray.length);
このコードでは '0' が表示されます。一方、「2」が表示されると予想されるかもしれません。これは、配列に追加された名前付きプロパティがその長さプロパティに影響を与えないためです。代わりに、それらは配列オブジェクトの追加プロパティとして扱われます。
対照的に、名前付きプロパティで宣言されたオブジェクト リテラルは、その長さを正しく反映します。
var myObject = {'A': 'Athens', 'B': 'Berlin'}; alert(myObject.length); // This would display '2'
したがって、可能ではありますが、名前付きプロパティを配列に追加することは「不正行為」とみなされ、避ける必要があります。数値キー以外の場合は、代わりにオブジェクトを使用することをお勧めします。
以上が名前付きプロパティを JavaScript 配列に追加: オブジェクト リテラルとブラケット表記?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。