如何动态设置Javascript对象值?

如何动态设置Javascript对象值?,javascript,object,properties,set,Javascript,Object,Properties,Set,很难用语言来解释这个案例,让我举个例子: 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.name=val

很难用语言来解释这个案例,让我举个例子:

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.name=value

这两者都是可互换的

编辑:我猜你的意思是
myObj[prop]=value
,而不是myObj[name]=value。第二种语法很好:

这应该行得通。您混淆了变量的名称及其值。但在JavaScript中,使用字符串对对象进行索引以获取其属性效果很好。

就这么简单
myObj.name=value

当您创建一个对象
myObj
时,请把它想象成一本字典。在本例中,它有两个键,
name
age

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

  • 像一个数组(例如
    myObj[name]
    );或
  • 像一个属性(例如,
    myObj.name
    );请注意,某些属性是保留的,因此首选第一种方法
您应该能够将其作为属性访问,而不会出现任何问题。但是,要将其作为数组访问,需要将该键视为字符串

myObj["name"]

否则,javascript将假定
name
是一个变量,并且由于您尚未创建名为
name
的变量,因此它将无法访问您期望的密钥。

您可以使用与设置相同的方法获取属性

foo = {
 bar: "value"
}
您可以设置值
foo[“bar”]=“baz”

获得价值
foo[“bar”]


将返回“baz”。

您还可以创建类似于值对象(vo)的内容

somemodelsclassnamevo.js

function SomeModelClassNameVO(name,id) {
    this.name = name;
    this.id = id;
}
比你能做的还要多

   var someModelClassNameVO = new someModelClassNameVO('name',1);
   console.log(someModelClassNameVO.name);

可能的副本需要仔细查看。你好像忘了调整密码。它应该是
myObj[prop]=值
eval('myObj.+name)
也不起作用,因为变量
name
不存在。您应该使用更多
var
键盘来声明变量,使用更多分号,不要使用
eval
并接受更多答案。完成了。你的问题有缺陷——这确实有效,但你犯了一个错误。你写了“
myObj[name]
”,而我很确定你是想写“
myObj[prop]
”。如果object属性是保留字,则需要第二种语法。虽然这是正确的,但并不能真正回答他的问题;当属性名在变量中时,他想知道该怎么做。更新了答案,你有
name
你应该有
prop
但是
myObj[name]
myObj.name
之间仍然有区别,因为前者指的是变量名,第二个指的是文本键。
function SomeModelClassNameVO(name,id) {
    this.name = name;
    this.id = id;
}
   var someModelClassNameVO = new someModelClassNameVO('name',1);
   console.log(someModelClassNameVO.name);