如何将多个值赋给JavaScript对象?

11

假设我有一个具有以下键值对的对象:

var someVar = {
    color: "white",
    font_size: "30px",
    font_weight: "normal"
...some more variables and functions
};

有没有一种方法可以对这些键进行多重赋值,而不需要像这样做:

someVar.color = "blue";
someVar.font_size = "30px";
...

1
jQuery.extend,或者使用for...in循环遍历对象的所需属性,并将它们设置在某个对象上。例如,请参见https://dev59.com/nmkv5IYBdhLWcg3wsCpO#19776683。 - Dalius
5个回答

13

使用ES2015,您可以使用Object.assign

const someVar = {
    color: "white",
    font_size: "30px",
    font_weight: "normal"
};

const newVar = Object.assign({}, someVar, { 
    color: "blue", 
    font_size: "30px"});

console.log(newVar);

{
    color: "blue",
    font_size: "30px",
    font_weight: "normal"
}

10

使用 ES6 扩展操作符:

someVar = {...someVar, color: "blue", font_size: "30px"}

3

你可以循环遍历另一个对象:

var thingsToAdd = {
    color: "blue",
    font_size: "30px"
};
for (var x in thingsToAdd) someVar[x] = thingsToAdd[x];

或者,您可以使用 with警告:这几乎肯定是一个不好的想法!请参阅链接。我只是为了教育目的而发布这篇文章;你几乎永远不应该在生产代码中使用with):

with (someVar) {
    color = "blue";
    font_size = "30px";
}

好的!@Dalius 先前提到了类似的内容,但由于你提到了“with”,所以我会给予你答复。 - iwatakeshi

0
我会使用对象构造函数。 大概是这样的:
function someVar (color,fontSize, fontWeight){
    this.color = color,
    this.fontSize = fontSize,
    this.fontWeight = fontWeight
};
var var1 = new someVar("red","12px","45px");

-3
var myvar ={};
myvar['color']='red';
myvar['width'] ='100px';
alert(myvar.color);

或者 alert(myvar['color']);


1
OP明确请求一种比逐个设置属性更好的方法。 - raychz
这是相对于键的动态赋值,就像如果键是任何变量,如var col ='color'; myvar[col] ='red'; - Maneesh Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接