我尽力想到这个问题的名称,如果我能得到一些术语来帮助我改变它
我能描述的最佳方式是
obj1 = {
"a":{"var":1},
"b":{"var":2},
"c":{"var":3}
}
// What's the difference between
resulta = obj1['a']['var']
// and...
resultb = obj1.a.var
那么,使用['']和。之间的区别是什么。 ?
我意识到你只能使用。运行功能,但这是唯一的区别吗?
一种方法比另一种更快吗? (甚至一点点?)
答案 0 :(得分:1)
如果您正在动态构建对象的属性键,则使用方括号的第一种方法很方便:
var myDynamicKey = "a";
var result = obj[myDynamicKey]["var"];
var result = obj["someOtherKey_" + myDynamicKey]["var"];
如果您事先了解这些属性,那么第二个肯定是首选。
注意你可以混合搭配:
var result = obj[myDynamicKey].var;
我愿意打赌使用点表示法访问属性的速度更快,但我没有实际的数据支持。
答案 1 :(得分: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]
}
}
VS
function updateKeys(name, phone, email){
object.name = name;
object.phone = phone;
object.email = email
}
['']方式更灵活,允许更多代码重用。大多数图书馆都会使用这个,或者一些本土的替代方式来做事。
答案 2 :(得分: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+(Reaching+into+Objects)
第一个我会调用dot notation
,它可用于访问对象的方法和属性,第二个是关联数组。