使用变量动态访问对象属性

时间:2018-03-06 17:57:55

标签: javascript

我有一个大对象,其中嵌套了多个对象。我有一个函数,它将获取其中一个对象的键,我想向被调用的子对象添加一个新属性。像https://jsfiddle.net/cf15xdfm/2/

这样的东西
var my_object = {
    object1: {
    key: 'value',
    key2: 'value2'
  },
  object2: {
    key: 'othervalue',
    key2: 'another'
  }
}

function doSomething(obj_key) {
    // add a new property to the object 
  my_object.obj_key.new_prop = 'this_new_prop';
}

doSomething('object1');

console.dir(my_object);

如何在obj_key方法中引用变量doSomething,以便我可以更改所需的对象?

3 个答案:

答案 0 :(得分:2)

利用brackets notation访问dynamic keys

var my_object = {
    object1: {
    key: 'value',
    key2: 'value2'
  },
  object2: {
    key: 'othervalue',
    key2: 'another'
  }
}

function doSomething(obj_key) {
    // add a new property to the object 
  my_object[obj_key].new_prop = 'this_new_prop'; // using bracket notation here
}

doSomething('object1');

console.dir(my_object);

答案 1 :(得分:0)

您可以使用:

my_object[obj_key].new_prop='this_new_prop';

答案 2 :(得分:0)

您可以将属性称为字符串,如下所示:

DECLARE @table_name varchar(max)
SELECT @table_name = MIN(tablenames) FROM tablelist;
WHILE @table_name IS NOT NULL
BEGIN
    EXEC('SELECT * FROM  ' + @table_name)
    SELECT @table_name = MIN(tablenames) FROM tablelist WHERE tablenames > @table_name;
END;

所以你应该这样做:

obj['property_name']

编辑:抱歉没有看到答案已经存在