2011-02-26 123 views

回答

108

第一个和第三个是等价的,并创建一个新的数组。第二个创建一个新的空对象,而不是一个数组。

var myArray = []; //create a new array 
var myArray = {}; //creates **a new empty object** 
var myArray = new Array(); //create a new array 
+0

我们如何访问对象的值。 – Pinkie 2011-02-26 20:35:18

+0

@Pinkie:看到这里:http://www.javascriptkit.com/javatutors/oopjs.shtml – 2011-02-26 20:39:30

+2

使用括号或点符号:'myObject [“someValue”]'或'myObject.someValue'。由'{}'创建的空对象当然不会拥有这些属性,但是可以用相同的方式赋值给它们:'myObject.someValue =“hello!”' – johusman 2011-02-26 20:39:42

27

var myObject = {};相当于变种myObject = new Object();

所以,第二示例不是Array而是一般Object

这可能会造成混淆为Array是一个类,Object是一类 - 更准确地说是Array一个子类的Object。所以,总的来说,Object语义适用于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 
+2

存储property1的位置。它是不是在阵列 – Pinkie 2011-02-26 20:55:49

+7

@Pinkie:现在越来越混乱:*数组也是对象*。通过做'o ['property1'] ='属性值',你实际上并不是将一个元素添加到数组中,而是设置*数组对象*的一个属性。困惑?我告诉过你;)在JavaScript中,基本上每件事都是一个对象。其他对象,例如'Array','RegExp',...扩展了基本对象的更多功能。用大括号'plain_obj = {}'创建一个普通的空对象。 – 2011-02-26 21:00:48