【问题标题】:JavaScript arrays braces vs bracketsJavaScript 数组大括号与方括号
【发布时间】:2011-07-05 00:18:02
【问题描述】:

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

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

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

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

    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!"
    • 在这种特殊情况下,1 和 3 具有相同的效果。然而,有时它们的行为会有所不同。例如,如果var a = new Array(5)var b = [5],那么ab(因为a.length = 5 而b.length = 1,a[0]undefinedb[0] 是5,所以开。)
    • var a;var a = {}; 一样吗?
    【解决方案2】:

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

    所以,第二个例子不是Array,而是一般的Object

    这可能会让人感到困惑,因为Array 是一个类,而Object 是一个类——更准确地说,ArrayObject 的一个子类。所以,总的来说,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
    

    【讨论】:

    • property1 存储在哪里。是不是在数组里
    • @Pinkie:这现在变得令人困惑:数组也是对象。通过执行o['property1'] = 'property value',您实际上并没有向数组添加元素,而是设置数组对象 的属性。使困惑?我告诉过你 ;) 在 JavaScript 中,基本上一切都是对象。其他对象,如ArrayRegExp、... 扩展基本对象并提供更多功能。使用大括号 plain_obj = {} 创建一个普通的空对象。
    猜你喜欢
    • 1970-01-01
    • 2019-02-22
    • 2022-11-19
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多