JavaScript数组括号和括号

Pin*_*kie 103 javascript arrays

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

var myArray = [];
var myArray = {};
var myArray = new Array();
Run Code Online (Sandbox Code Playgroud)

joh*_*man 130

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

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

  • 在这种特殊情况下,1和3具有相同的效果.然而,有时候他们表现得不一样.例如,如果`var a = new Array(5)`和`var b = [5]`,那么`a`≠`b`(因为`a.length` = 5而``b.length` = 1, `a [0]`是'undefined`而`b [0]`是5,依此类推.) (4认同)
  • 用括号或点表示法:`myObject ["someValue"]`或`myObject.someValue`.由`{}`创建的空对象当然不具有这些属性,但您可以用相同的方式分配它们:`myObject.someValue ="hello!"` (3认同)

lee*_*ers 30

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
Run Code Online (Sandbox Code Playgroud)

  • @Pinkie:现在这让人感到困惑:*数组也是对象*.通过执行`o ['property1'] ='属性值',您实际上并没有向数组添加元素,而是设置*数组对象*的属性.困惑?我告诉你;)在JavaScript中,基本上所有东西都是一个对象.其他对象,如`Array`,`RegExp`,......用更多功能扩展基本对象.用大括号`plain_obj = {}`创建一个普通的空对象. (9认同)
  • property1存储在哪里.它不在数组中 (2认同)