Respostas:
O primeiro e o terceiro são equivalentes e criam uma nova matriz. O segundo cria um novo objeto vazio, não uma matriz.
var myArray = []; //create a new array
var myArray = {}; //creates **a new empty object**
var myArray = new Array(); //create a new array
myObject["someValue"]
ou myObject.someValue
. O objeto vazio criado por {}
certamente não terá essas propriedades, mas você pode atribuir a eles da mesma maneira:myObject.someValue = "hello!"
var a = new Array(5)
e var b = [5]
, então a
≠ b
(visto que a.length
= 5 enquanto b.length
= 1, a[0]
é undefined
enquanto b[0]
é 5 e assim por diante.)
var a;
e var a = {};
o mesmo?
var myObject = {};
é equivalente a var myObject = new Object();
Portanto, o segundo exemplo não é um, Array
mas um geral Object
.
Isso pode ficar confuso, pois Array
é uma classe e Object
é uma classe - mais precisamente Array
é uma subclasse de Object
. Portanto, em geral, a Object
semântica é aplicável 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'
, você não está realmente adicionando um elemento à matriz, mas definindo uma propriedade do objeto da matriz . Confuso? Eu te disse;) Em JavaScript, basicamente tudo é um objeto. Outros objetos, como Array
, RegExp
... estendem o objeto básico com funcionalidade adicional. Um objeto simples e vazio é criado com as chaves plain_obj = {}
.