2011-02-26 15 views

Respuesta

108

El primero y el tercero son equivalentes y crean una nueva matriz. El segundo crea un nuevo objeto vacío, no una matriz.

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

¿Cómo accedemos a los valores del objeto. – Pinkie

+0

@Pinkie: Vea aquí: http://www.javascriptkit.com/javatutors/oopjs.shtml –

+2

Con corchetes o notación de puntos: 'myObject [" someValue "]' or 'myObject.someValue'. El objeto vacío creado por '{}' por supuesto no tendrá esas propiedades, pero puede asignarlas de la misma manera: 'myObject.someValue =" hello! '' – johusman

27

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

Por lo tanto, el segundo ejemplo no es una Array pero un general Object.

Esto puede resultar confuso como Array es una clase y Object es una clase - más precisamente Array es una subclase de Object. Así que, en general, Object semántica es aplicable 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

donde se almacena la propiedad1. No está en la matriz – Pinkie

+7

@Pinkie: Esto se está volviendo confuso ahora: * Las matrices también son objetos *. Al hacer 'o ['property1'] = 'property value'', en realidad no está agregando un elemento a la matriz, sino estableciendo una propiedad del * objeto de matriz *. ¿Confuso? Te lo dije;) En JavaScript, básicamente, todo es un objeto. Otros objetos, como 'Array',' RegExp', ... extienden el objeto básico con más funcionalidades. Un objeto simple, vacío se crea con los corchetes 'plain_obj = {}'. –

Cuestiones relacionadas