如何动态设置 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 对象中设置具有变量值的变量属性?

394667 次浏览
myObj.name=value

或者

myObj['name']=value     (Quotes are required)

这两个都是可以互换的。

编辑: 我猜你指的是 myObj[prop] = value,而不是 myObj [ name ] = value。第二种语法工作得很好: < a href = “ http://jsfiddle.net/wait inforatrain/dNjvb/1/”rel = “ noReferrer”> http://jsfiddle.net/waitinforatrain/dnjvb/1/

myObj[prop] = value;

应该可以。你把变量的名字和它的值搞混了。但是用字符串索引一个对象以获得它的属性在 JavaScript 中工作得很好。

就这么简单 myObj.name = value;

当您创建一个对象 myObj时,可以将它看作是一个字典。在本例中,它有两个键: nameage

你可以通过两种方式查阅这些字典:

  • 类似于数组(例如 myObj[name]) ; 或者
  • 与属性类似(例如 myObj.name) ; 请注意,有些属性是保留的,因此首选第一种方法。

您应该能够以属性的形式访问它,没有任何问题。但是,要以数组的形式访问它,您需要将键视为字符串。

myObj["name"]

否则,javascript 将假定 name是一个变量,并且由于您还没有创建一个名为 name的变量,因此它将无法访问您所期望的键。

您可以按照设置属性的方式获取该属性。

foo = {
bar: "value"
}

你来设置值 foo["bar"] = "baz";

为了得到价值 foo["bar"]

将返回“ baz”。

您还可以创建类似于值对象(vo)的东西;

Some ModelClassNameVO.js;

function SomeModelClassNameVO(name,id) {
this.name = name;
this.id = id;
}

比你能做的更多

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

你可以这样做:

var currentObj = {
name: 'Umut',
age : 34
};


var newValues = {
name: 'Onur',
}

Option 1:

currentObj = Object.assign(currentObj, newValues);

选择2:

currentObj = {...currentObj, ...newValues};

选择3:

Object.keys(newValues).forEach(key => {
currentObj[key] = newValues[key];
});