如何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 ,可以把它想象成一个字典。 在这种情况下,它有两个键, nameage

您可以通过两种方式访问​​这些字典:

  • 就像一个数组(例如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] ”。