【发布时间】:2011-07-05 00:18:02
【问题描述】:
以下每个数组定义有什么区别。
var myArray = [];
var myArray = {};
var myArray = new Array();
【问题讨论】:
标签: javascript arrays
以下每个数组定义有什么区别。
var myArray = [];
var myArray = {};
var myArray = new Array();
【问题讨论】:
标签: javascript arrays
第一个和第三个是等价的,创建一个新数组。第二个创建一个新的空对象,而不是一个数组。
var myArray = []; //create a new array
var myArray = {}; //creates **a new empty object**
var myArray = new Array(); //create a new array
【讨论】:
myObject["someValue"] 或 myObject.someValue。 {} 创建的空对象当然不会有这些属性,但是你可以用同样的方式给它们赋值:myObject.someValue = "hello!"
var a = new Array(5) 和var b = [5],那么a≠b(因为a.length = 5 而b.length = 1,a[0] 是undefined 而b[0] 是5,所以开。)
var a; 和 var a = {}; 一样吗?
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 = {} 创建一个普通的空对象。