如何动态设置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);