¿Cuál es la diferencia entre cada una de las siguientes definiciones de matriz?
var myArray = [];
var myArray = {};
var myArray = new Array();
javascript
arrays
Dedo meñique
fuente
fuente
myObject["someValue"]
omyObject.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)
yvar b = [5]
, entoncesa
≠b
(ya quea.length
= 5 whileb.length
= 1,a[0]
esundefined
whileb[0]
es 5, y así sucesivamente.)var a;
yvar a = {};
lo mismo?var myObject = {};
es equivalente a varmyObject = new Object();
Entonces, el segundo ejemplo no es
Array
general, sino generalObject
.Esto puede resultar confuso ya que
Array
es una clase yObject
es una clase; más precisamente,Array
es una subclase deObject
. Entonces, en general, laObject
semántica es aplicable aArray
:fuente
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, comoArray
,RegExp
, ... ampliar el objeto básico con mayor funcionalidad. Se crea un objeto simple y vacío con las llavesplain_obj = {}
.