¿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 undefinedwhile 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 Arraygeneral, sino general Object.
Esto puede resultar confuso ya que Arrayes una clase y Objectes una clase; más precisamente, Arrayes una subclase de Object. Entonces, en general, la Objectsemá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 = {}.