以下各种数组定义有何区别?
var myArray = [];
var myArray = {};
var myArray = new Array();
以下各种数组定义有何区别?
var myArray = [];
var myArray = {};
var myArray = new Array();
第一个和第三个等价,都会创建一个新的数组。第二个会创建一个新的空对象,而不是一个数组。
var myArray = []; //create a new array
var myArray = {}; //creates **a new empty object**
var myArray = new Array(); //create a new array
var myObject = {};
的等价写法是 var 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
o['property1'] = 'property value'
,你实际上并没有向数组中添加元素,而是设置了数组对象的一个属性。感到困惑吗?我告诉过你啦 ;) 在JavaScript中,基本上所有的东西都是对象。其他对象,如Array
、RegExp
等,通过进一步的功能扩展了基本对象。可以用花括号创建一个空的普通对象,例如plain_obj = {}
。 - Felix Kling
myObject["someValue"]
或myObject.someValue
。当然,由{}
创建的空对象不会有这些属性,但你可以以同样的方式对它们进行赋值:myObject.someValue = "hello!"
。 - johusmanvar a = new Array(5)
和var b = [5]
,那么a
≠b
(因为a.length
= 5 而b.length
= 1,a[0]
是undefined
而b[0]
是 5,以此类推)。 - Hunan Rostomyanvar a;
和var a = {};
是一样的吗? - RNA