JavaScript 对象 - 在不使用 eval 的情况下添加属性?

标签 javascript

我有一个 JavaScript 对象,我想向其添加一些属性,但直到运行时我才知道属性的名称是什么。

我可以在不使用 eval 的情况下执行此操作吗?如果是,怎么办?

var get_params = new Object();
var params = {'name':'john', 'age':'23'}; //actually not known until runtime
for (var i=0, len=params.length; i<len; ++i ){                                                  
        get_params.p[0] = p[1]; //How can I set p[0] as the object property?
    }
}

最佳答案

由于您的代码示例包含格式错误的数组,因此我将包括 2 个变体。

变体 1(params 是一个实际对象而不是数组):

var get_params = {}; // prefer literal over Object constructors.

var params = {'name':'john', 'age':'23'}; // @runtime (as object literal)

for (var key in params){
    if(params.hasOwnProperty(key)) { // so we dont copy native props
        get_params[key] = params[key];
    }
}

变体2(参数是一个包含对象的数组):

var get_params = {}; // prefer literal over Object constructors.

var params = [{'name':'john'},{'age':'23'}]; // @runtime (as array literal)

for(var i=0,param;param=params[i];i++) {
    for (var key in param){
        if(param.hasOwnProperty(key)) {
            get_params[key] = param[key];
        }
    }
}

享受吧。

关于JavaScript 对象 - 在不使用 eval 的情况下添加属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3707036/

相关文章:

javascript - react-router-dom 不工作只是渲染 "/"

javascript - $ ("<img/>").attr ("src",something).load() 在 IE < 9 中不支持?

javascript - MomentJS - isValid() 方法未正确验证

javascript - 使用 Javascript 注入(inject) CSS 样式表

javascript - 无法使用 vue 和 laravel 后端发布记录

javascript - 如何始终在当前 View 中保持水平底部滚动条

javascript - 使用 grunt-ts 编译 typescript 时 require.js 和 sourcemaps 的问题

使用 appendchild 时,Javascript childNodes 找不到 div 的所有子节点

javascript - CKeditor setData() 方法省略图像

javascript - 调用多个函数进行渲染