Javascript - 如何在内部存储数组?

时间:2015-01-09 19:19:40

标签: javascript arrays object

在小提琴 - http://jsfiddle.net/vwwkf18c/或以下代码段 -

var a = [3, 4];
var b = [6, 2];
var c = $.extend({}, a, b);
alert(c[1]); //alerts 2
alert(a); //alerts array a contents
alert(c); //does not return contents of c

我的问题 - 1)在收到警报后,我们可以推断出" c"是一个对象,但不是一个数组对象。请确认。 2)其次,据说数组的内部表示是一个对象字面,是吗?  这意味着阵列" a"将按以下方式存储 -

var a = {
0: 3,
1: 4
}

是不是? 3)如何在内部存储a或b,以及它与" c"的内部表示有何不同?

2 个答案:

答案 0 :(得分:1)

  1. 请参阅the docs:"返回:对象"
  2. 否。对象文字是用于创建对象的JavaScript 语法。数组是一种从基本对象继承(沿原型链)的对象类型。 Array类型具有与基本Object不同的toString方法,这就是alert给出不同结果的原因。
  3. 这是特定于实现的(并且对编写JavaScript而不是JavaScript运行时的任何人都不重要)

答案 1 :(得分:0)

  1. 是的,c是一个对象,但不是一个数组。
  2. a(数组)的内部表示除了'0'和'1'之外还有一个名为'length'的属性
  3. c具有'0'和'1'的属性,但不具有属性'length'
  4. 查看this jsfiddle

    var a = [3, 4];
    
    var b = [6, 2];
    
    var c = $.extend({}, a, b);
    
    alert(c[1]); //alerts 2
    alert(a); //alerts array a contents
    alert(Object.getOwnPropertyNames(c)); //does not return contents of c
    alert(Object.getOwnPropertyNames(a));
    

    希望有帮助

    维克拉姆