如何动态设置 Javascript 对象值?

IT技术 javascript object properties set
2021-01-21 09:54:50

一言难尽,举个例子:

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

6个回答
myObj[prop] = value;

那应该有效。您混淆了变量的名称及其值。但是用字符串索引对象以获取其属性在 JavaScript 中工作正常。

myObj.name=value

或者

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

这两者是可以互换的。

编辑:我猜你的意思是myObj[prop] = value,而不是 myObj[name] = value。第二种语法工作正常:http : //jsfiddle.net/waitinoratrain/dNjvb/1/

虽然这是正确的,但它并没有真正回答他的问题。他想知道当属性名称在变量中时该怎么办。
2021-03-29 09:54:50
name在那里更新了答案,你有你应该有的地方prop
2021-04-05 09:54:50
如果对象属性是保留字,则需要第二种语法。
2021-04-06 09:54:50

您可以通过与设置相同的方式获取该属性。

foo = {
 bar: "value"
}

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

获取value foo["bar"]

将返回“baz”。

您还可以创建类似于值对象 (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, 和age

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

  • 像一个数组(例如myObj[name]);或者
  • 像一个财产(例如myObj.name);请注意,某些属性是保留的,因此首选第一种方法。

您应该能够毫无问题地将其作为属性访问。但是,要将其作为数组访问,您需要将键视为字符串。

myObj["name"]

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

myObj[name]myObj.name虽然还是有区别的,因为前者指的是变量名,而后者指的是文字键。
2021-03-14 09:54:50