一言难尽,举个例子:
var myObj = {
'name': 'Umut',
'age' : 34
};
var prop = 'name';
var value = 'Onur';
myObj[name] = value; // This does not work
eval('myObj.' + name) = value; //Bad coding ;)
如何在 JavaScript 对象中设置具有变量值的变量属性?
一言难尽,举个例子:
var myObj = {
'name': 'Umut',
'age' : 34
};
var prop = 'name';
var value = 'Onur';
myObj[name] = value; // This does not work
eval('myObj.' + name) = value; //Bad coding ;)
如何在 JavaScript 对象中设置具有变量值的变量属性?
myObj[prop] = value;
那应该有效。您混淆了变量的名称及其值。但是用字符串索引对象以获取其属性在 JavaScript 中工作正常。
myObj.name=value
或者
myObj['name']=value (Quotes are required)
这两者是可以互换的。
编辑:我猜你的意思是myObj[prop] = value
,而不是 myObj[name] = value。第二种语法工作正常:http : //jsfiddle.net/waitinoratrain/dNjvb/1/
您可以通过与设置相同的方式获取该属性。
foo = {
bar: "value"
}
你设置的值
foo["bar"] = "baz";
获取value
foo["bar"]
将返回“baz”。
您还可以创建类似于值对象 (vo) 的东西;
SomeModelClassNameVO.js;
function SomeModelClassNameVO(name,id) {
this.name = name;
this.id = id;
}
比你能做的更多;
var someModelClassNameVO = new someModelClassNameVO('name',1);
console.log(someModelClassNameVO.name);
当你创建一个对象时myObj
,把它想象成一本字典。在这种情况下,它有两个键name
, 和age
。
您可以通过两种方式访问这些词典:
myObj[name]
);或者myObj.name
);请注意,某些属性是保留的,因此首选第一种方法。您应该能够毫无问题地将其作为属性访问。但是,要将其作为数组访问,您需要将键视为字符串。
myObj["name"]
否则,javascript 将假定这name
是一个变量,并且由于您尚未创建名为 的变量name
,因此它将无法访问您期望的密钥。