1
var my = {};

my["1"] = "tom";

my["2"] = "tony";

document.writeln(my["2"]);

一个简单的问题,{} 叫什么?我知道 [] 被称为 arraylist,我可以对其执行 my.indexOf() 等,但这不适用于 {}。

在哪里可以找到我可以使用 list with {} 执行的操作列表

4

3 回答 3

5

{}被称为对象,在您的声明中:

var my = {};

您只是在创建一个空对象,然后可以向其中添加属性。

数组和对象都可以使用[x]语法访问。数组最适合用于具有数字索引的顺序访问,如下所示:

x[1]
x[2]

对象最适合使用非顺序字符串索引进行访问,例如:

my["autoSaveTime"]
my.autoSaveTime

有些人还将对象视为哈希表或关联数组,因为它们通常可以用于与其他编程结构类似的目的。

根据您在评论中提出的问题,数组具有类似的属性和类似.length的方法.push().pop()。对象没有。MDN 是此类事情的参考信息的良好来源。这是关于数组方法的 MDN 页面,这里是关于使用对象的一个​​很好的概述

对象没有这些方法。由于对象没有顺序,因此您只需分配给它们或读取它们或迭代它们或删除属性,因为不需要像数组一样尝试更改它们的顺序。

var x = my.autoSaveTime;
my.autoSaveTime = 200;
for (var key in my) {
    var item = my[key];
    // do something with item or key here
}

要理解的一件棘手的事情是,数组实际上是从对象派生的,并添加了额外的数组功能。也就是说,数组还可以包含任意字符串命名的属性,如对象,并具有对象所具有的所有泛型方法。对象没有数组功能和方法。因此,数组是对象的超集。

于 2012-04-16T16:03:41.817 回答
2

具体来说,{}在这种情况下,表示对象文字表示法。它是语言的一个句法特征,是创建Object.

这个...

var my = {};

...只需创建一个不直接拥有任何属性的对象。

您可以使用相同的对象字面量语法立即赋予 Object 属性。

var my = {
    '1': 'tom',
    '2': 'tony'
};

创建空对象的等效代码是使用Object构造函数...

var my = new Object();

您应该知道 JavaScript 中的 Object 是无序的。您给它的数字索引在枚举对象时不会保证任何排序。要获得有序循环,您需要获取一个键数组,对它们进行排序,然后迭代该数组。

例如...

var my_keys = Object.keys(my);

my_keys.sort(function(a,b) {
    return a - b;
});

for (var i = 0; i < my_keys[i]; i++)
    console.log(my[my_keys[i]]);
于 2012-04-16T16:05:57.920 回答
0

一个“对象” http://www.dyn-web.com/tutorials/obj_lit.php

于 2012-04-16T16:05:09.783 回答