如何dynamic设置一个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对象中设置variables值的variables属性?
myObj[prop] = value;
这应该工作。 你混淆了variables的名字和它的值。 但索引一个对象的string来获得它的属性在JavaScript中工作正常。
myObj.name=value
要么
myObj['name']=value (Quotes are required)
这两个都是可以互换的。
编辑:我猜你是指myObj[prop] = value
,而不是myObj [名称] =值。 第二种语法工作正常: http : //jsfiddle.net/waitinforatrain/dNjvb/1/
您可以像设置它一样获取该属性。
foo = { bar: "value" }
你设置值foo["bar"] = "baz";
获取值foo["bar"]
将返回“巴兹”。
当你创build一个对象myObj
,可以把它想象成一个字典。 在这种情况下,它有两个键, name
和age
。
您可以通过两种方式访问这些字典:
- 就像一个数组(例如
myObj[name]
); 要么 - 像一个属性(如
myObj.name
); 请注意,一些属性是保留的,所以第一种方法是首选。
你应该可以作为一个财产访问它没有任何问题。 但是,要以数组的forms访问它,则需要像键入string那样对待键。
myObj["name"]
否则,javascript将假设name
是一个variables,并且由于您尚未创build名为name
的variables,因此将无法访问您期望的密钥。
你也可以创build一个类似于值对象(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 = value;
你的问题是有缺陷的 – 那是行得通的,但你犯了一个错误。 当我确定你要写“ myObj[prop]
”时,你写了“ myObj[name]
myObj[prop]
”。