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]é undefinedenquanto 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, Arraymas 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 Objectsemâ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 = {}.