Array JavaScript tra parentesi graffe vs parentesi


111

Qual è la differenza tra ciascuna delle seguenti definizioni di array.

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

Risposte:


137

Il primo e il terzo sono equivalenti e creano un nuovo array. Il secondo crea un nuovo oggetto vuoto, non un array.

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

Come accediamo ai valori dell'oggetto.
Pinkie

3
Con parentesi o notazione punto: myObject["someValue"]o myObject.someValue. L'oggetto vuoto creato da {}ovviamente non avrà queste proprietà, ma puoi assegnargli allo stesso modo:myObject.someValue = "hello!"
johusman

4
In questo caso particolare 1 e 3 hanno lo stesso effetto. A volte, tuttavia, si comportano diversamente. Ad esempio, if var a = new Array(5)and var b = [5], then ab(since a.length= 5 while b.length= 1, a[0]is undefinedwhile b[0]is 5, and so on.)
Hunan Rostomyan

è var a;e var a = {};lo stesso?
RNA

31

var myObject = {}; è equivalente a var myObject = new Object();

Quindi, il secondo esempio non è un Arrayma un generale Object.

Questo può creare confusione poiché Arrayè una classe ed Objectè una classe - più precisamente Arrayè una sottoclasse di Object. Quindi, in generale, la Objectsemantica è applicabile a un 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
dove è la proprietà1 memorizzata. Non è nella matrice
Pinkie

9
@Pinkie: La cosa sta creando confusione ora: anche gli array sono oggetti . In questo modo o['property1'] = 'property value', non stai effettivamente aggiungendo un elemento all'array, ma impostando una proprietà dell'oggetto array . Confuso? Te l'ho detto;) In JavaScript, praticamente tutto è un oggetto. Altri oggetti, come Array, RegExp, ... estendono l'oggetto base con ulteriori funzionalità. Un oggetto semplice e vuoto viene creato con le parentesi graffe plain_obj = {}.
Felix Kling
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.