¿Cuál es la diferencia entre cada una de las siguientes definiciones de matriz?
var myArray = [];
var myArray = {};
var myArray = new Array();
¿Cuál es la diferencia entre cada una de las siguientes definiciones de matriz?
var myArray = [];
var myArray = {};
var myArray = new Array();
Respuestas:
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
myObject["someValue"]
o myObject.someValue
. El objeto vacío creado por {}
, por supuesto, no tendrá esas propiedades, pero puede asignarles de la misma manera:myObject.someValue = "hello!"
var a = new Array(5)
y var b = [5]
, entonces a
≠ b
(ya que a.length
= 5 while b.length
= 1, a[0]
es undefined
while b[0]
es 5, y así sucesivamente.)
var a;
y var a = {};
lo mismo?
var myObject = {};
es equivalente a var myObject = new Object();
Entonces, el segundo ejemplo no es Array
general, sino general Object
.
Esto puede resultar confuso ya que Array
es una clase y Object
es una clase; más precisamente, Array
es una subclase de Object
. Entonces, en general, la Object
semántica es aplicable a 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
o['property1'] = 'property value'
, en realidad no está agregando un elemento a la matriz, sino configurando una propiedad del objeto de matriz . ¿Confuso? Ya te lo dije;) En JavaScript, básicamente todo es un objeto. Otros objetos, como Array
, RegExp
, ... ampliar el objeto básico con mayor funcionalidad. Se crea un objeto simple y vacío con las llaves plain_obj = {}
.