JavaScript配列の括弧と括弧


110

次の各配列定義の違いは何ですか。

var myArray = [];
var myArray = {};
var myArray = new Array();

回答:


137

最初と3番目は同等であり、新しい配列を作成します。2番目は、配列ではなく新しい空のオブジェクトを作成します。

var myArray = []; //create a new array
var myArray = {}; //creates **a new empty object**
var myArray = new Array(); //create a new array

オブジェクトの値にアクセスするにはどうすればよいですか。
ピンキー

3
大括弧またはドット表記:myObject["someValue"]またはmyObject.someValue。作成された空のオブジェクト{}の意志はもちろん、それらの性質を持っていないが、あなたは同じように彼らに割り当てることができますmyObject.someValue = "hello!"
johusman

4
この特定のケースでは、1と3は同じ効果があります。ただし、動作が異なる場合があります。例えば、var a = new Array(5)そしてvar b = [5]、その後ab(以降a.length= 5ながらb.length= 1、a[0]でありundefinedながらb[0]5である、など。)
湖南Rostomyan

であるvar a;var a = {};同じ?
RNA

31

var myObject = {}; varと同等 myObject = new Object();

したがって、2番目の例はArray一般的なものではありませんObject

これはArrayクラスであり、クラスでもObjectあり、より正確にArrayはのサブクラスなので、混乱する可能性がありObjectます。したがって、Object概して、セマンティクスは以下に適用できますArray

var o = [];
o.push('element1');
o.push('element2');
o['property1'] = 'property value';  // define a custom property.
console.log(o.property1);
console.log(o.length);  // Outputs '2' as we've only push()'ed two elements onto the Array

2
property1はどこに保存されますか。配列に含まれていませんか
Pinkie '26 / 02/26

9
@Pinkie:これは今やややこしくなっています:配列もオブジェクトです。これによりo['property1'] = 'property value'、実際には配列に要素を追加するのではなく、配列オブジェクトのプロパティを設定します。混乱していますか?私はyaに言った;)JavaScriptでは、基本的にすべてがオブジェクトです。他の目的は、のようなArrayRegExp...更なる機能を持つ基本的なオブジェクトを拡張します。プレーンな空のオブジェクトは、中括弧で作成されますplain_obj = {}
Felix Kling、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.