2012-04-16 46 views
1
var my = {}; 

my["1"] = "tom"; 

my["2"] = "tony"; 

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

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

我在哪里可以找到操作的列表,我可以列表与{}

+0

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create – malletjo 2012-04-16 16:05:15

+0

https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects ...你应该多读一点。 – malletjo 2012-04-16 16:06:48

+0

好的,谢谢。在编码方面完全是新的。 – RedHotScalability 2012-04-16 16:08:21

回答

2

具体地,在这种情况下,{}表示对象文字符号。这是语言的语法特征,是创建Object的一种方式。

这...

var my = {}; 

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

您可以使用相同的对象文字语法立即给出对象属性。

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

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

var my = new Object(); 

您应该知道JavaScript中的对象是无序的。枚举对象时,您给它的数字索引不能保证任何顺序。为了得到一个有序的循环,你需要获得一个键的数组,然后对它们进行排序,然后遍历数组。

例如...

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]]); 
5

{}执行被称为一个对象,并在你的宣言:

var my = {}; 

你只是创建一个空的对象,该对象你可以添加属性。

使用[x]语法可以访问这两个数组和对象。阵列最适用于与数字索引顺序访问,如:

x[1] 
x[2] 

对象最好用于非连续串指标,如访问:

my["autoSaveTime"] 
my.autoSaveTime 

有些人也认为对象为一的散列表或关联数组,因为它们通常可以用于其他编程结构的类似目的。

根据您在评论中询问的问题,阵列有像.length.push().pop()等方法的属性。物体不。 MDN是这方面的参考信息的很好的来源。这里是MDN page on array methods,这里是good overview on working with objects

对象没有这些方法。因为对象没有对它们的命令,所以你只需分配给它们或者读取它们或者迭代它们或者删除一个属性,因为不需要像在数组中那样尝试改变它们的顺序。

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

要理解的一个棘手的事情是,一个数组实际上是从一个对象派生而来的,并添加了额外的数组功能。也就是说,一个数组也可以包含像对象一样的名为属性的任意字符串,并具有对象所具有的所有通用方法。一个对象没有数组功能和方法。所以,一个数组是一个对象的超集。

+0

噢,我在哪里可以找到像Push,Pop,Length()这样的属性列表? – RedHotScalability 2012-04-16 16:05:46

+0

我在我的答案中添加了对数组方法的引用。 – jfriend00 2012-04-16 16:08:35