我有一个 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/