JavaScript数组大括号与括号


111

以下每个数组定义之间有什么区别。

var myArray = [];
var myArray = {};
var myArray = new Array();

Answers:


137

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

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

我们如何访问对象的值。
Pinkie

3
使用方括号或圆点表示法:myObject["someValue"]myObject.someValue{}当然,由创建的空对象将不具有这些属性,但是您可以通过相同的方式为其分配:myObject.someValue = "hello!"
johusman 2011年

4
在这种特定情况下,1和3具有相同的效果。但是,有时它们的行为会有所不同。例如,如果var a = new Array(5)var b = [5],则ab(因为a.length= 5,而b.length= 1,a[0]undefinedwhile b[0]是5,依此类推。)
湖南罗斯通延2015年

var a;var a = {};相同?
RNA

31

var myObject = {}; 等价于var myObject = new Object();

因此,第二个例子不是an,Array而是general 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

9
@Pinkie:现在变得令人困惑:数组也是对象。这样一来o['property1'] = 'property value',您实际上并没有在数组中添加元素,而是在设置array对象的属性。困惑?我告诉ya;)在JavaScript中,基本上所有东西都是对象。其他对象,例如Array,,RegExp...扩展了基本对象的功能。将使用大括号创建一个普通的空对象plain_obj = {}
Felix Kling
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.