【问题标题】:How to set a Javascript object values dynamically?如何动态设置 Javascript 对象值?
【发布时间】:2011-09-20 08:39:34
【问题描述】:

这个案例很难用文字来解释,我举个例子吧:

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[prop] = value;eval('myObj.'+name) 也不起作用,因为变量 name 不存在。
  • 您真的应该使用更多var 键盘来声明变量,使用更多分号,而不是使用eval 并接受更多答案。完成。
  • 你的问题有缺陷——确实有效,但你犯了一个错误。当我很确定你的意思是写“myObj[prop]”时,你写了“myObj[name]”。

标签: javascript object properties set


【解决方案1】:

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

SomeModelClassNameVO.js;

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

比你能做到的;

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

【讨论】:

    【解决方案2】:
    myObj[prop] = value;
    

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

    【讨论】:

      【解决方案3】:

      您可以像设置它一样获取该属性。

      foo = {
       bar: "value"
      }
      

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

      获取价值 foo["bar"]

      将返回“baz”。

      【讨论】:

        【解决方案4】:
        myObj.name=value
        

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

        这两者是可以互换的。

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

        【讨论】:

        • 如果对象属性是保留字,则需要第二种语法。
        • 虽然这是正确的,但并不能真正回答他的问题;他想知道当属性名称在变量中时该怎么办。
        • 那里更新了答案,你有name,你应该有prop
        【解决方案5】:

        当您创建对象myObj 时,请将其视为字典。在这种情况下,它有两个键,nameage

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

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

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

        myObj["name"]
        

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

        【讨论】:

        • myObj[name]myObj.name 之间还是有区别的,因为前者指的是变量名,而后者指的是文字键。
        【解决方案6】:

        就这么简单 myObj.name = value;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-25
          • 2019-02-12
          • 2020-01-30
          • 2022-01-25
          • 1970-01-01
          • 2016-09-16
          相关资源
          最近更新 更多