var my = {};
my["1"] = "tom";
my["2"] = "tony";
document.writeln(my["2"]);
一个简单的问题,{} 叫什么?我知道 [] 被称为 arraylist,我可以对其执行 my.indexOf() 等,但这不适用于 {}。
在哪里可以找到我可以使用 list with {} 执行的操作列表
var my = {};
my["1"] = "tom";
my["2"] = "tony";
document.writeln(my["2"]);
一个简单的问题,{} 叫什么?我知道 [] 被称为 arraylist,我可以对其执行 my.indexOf() 等,但这不适用于 {}。
在哪里可以找到我可以使用 list with {} 执行的操作列表
{}
被称为对象,在您的声明中:
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
}
要理解的一件棘手的事情是,数组实际上是从对象派生的,并添加了额外的数组功能。也就是说,数组还可以包含任意字符串命名的属性,如对象,并具有对象所具有的所有泛型方法。对象没有数组功能和方法。因此,数组是对象的超集。
具体来说,{}
在这种情况下,表示对象文字表示法。它是语言的一个句法特征,是创建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]]);