1

我尽力想出这个问题的名称,如果我能得到一些术语来帮助我会改变它

我能描述的最好的方式就是这样

obj1 = {
    "a":{"var":1},
    "b":{"var":2},
    "c":{"var":3}
}

// What's the difference between
resulta = obj1['a']['var']

// and...
resultb = obj1.a.var

那么,使用 [''] 和 . ?

我意识到你只能使用 . 运行函数,但这是唯一的区别吗?

一种方法比另一种更快吗?(甚至一点点?)

4

3 回答 3

1

如果您要动态构建对象的属性键,则使用方括号的第一种方法很方便:

var myDynamicKey = "a";
var result = obj[myDynamicKey]["var"];
var result = obj["someOtherKey_" + myDynamicKey]["var"];

如果您事先知道属性是什么,那么第二个绝对是首选。

请注意,您可以混合和匹配它们:

var result = obj[myDynamicKey].var;

我愿意打赌使用点表示法访问属性会更快,但我没有实际数据来支持这一点。

于 2012-05-14T22:05:06.220 回答
1

如果您使用 [''] 那么您可以将键的名称作为动态变量传递......它可以在运行时更改。如果您使用 .key.key 方法,那么您必须在构建时知道键是什么。

例子:

var keys = ['name','phone','email'];
var object = {"name": ,"phone": , "email"};
function updateKeys(name,phone,email){
    for(var i = 0; i < keys; i++){
        object[keys[i]] = arguments[i]
    }
}

对比

function updateKeys(name, phone, email){
    object.name = name; 
    object.phone = phone;
    object.email = email
}

[''] 方式更加灵活,允许更多的代码重用。大多数图书馆都会使用这种方法,或者使用一些自制的替代 [''] 做事方式。

于 2012-05-14T22:06:11.853 回答
0

有各种网站提供这方面的信息。

http://www.quirksmode.org/js/associative.html

http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)

http://www.mongodb.org/display/DOCS/Dot+Notation+ (到达+进入+对象)

我会调用的第一个dot notation可用于访问对象的方法和属性,第二个是关联数组。

于 2012-05-14T22:05:24.350 回答