一次性更新多个JavaScript对象属性

4
有没有一种简单的方式来完成以下操作:
let o = {}
o['a'] = 1;
o['b'] = 2;

例如,可以选择以下任意一种方式:
let o = {}
o.update({'a': 1, 'b': 2})

或:
let o = {'a': 1, 'b': 2}
1个回答

5

Object.assign 可以实现这个功能。

const o = { original: 'orig' };
Object.assign(o, {'a': 1, 'b': 2});

console.log(o);


谢谢,为什么在上面的情况下将其声明为const?更新对象不会使它变得“非const”吗? - David542
3
const 表示变量不会被重新赋值 - 即后面不会出现 o = somethingElse 这样的情况。在可能的情况下(95% 的情况下是可能的),声明变量时使用 const 是良好的编程习惯,可以使代码更易读。重新赋值和修改不是同一件事。修改是指对对象的 属性 进行赋值,而重新赋值是改变整个变量名所指向的内容。const 仅禁止重新赋值。 - CertainPerformance
谢谢,这是非常有帮助的解释。顺便问一下,查找对象的所有属性/方法,你通常怎么做?例如在Python中,我会执行类似于dir(set())的操作,并得到['pop','remove',...] - David542
1
Object.keys usually. If you want the values too, Object.entries. Only values: Object.values. Non-enumerable properties too (rare): Object.getOwnPropertyNames. Properties that are non-enumerable and prototypal: recursive Object.getOwnPropertyNames - CertainPerformance
你必须在 for 循环中枚举它们才能读取吗?例如,如果我只是这样做:console.log(Object.keys, Object.values, Object.values); 它会打印 [Function: keys] [Function: values] [Function: values] - David542
它们是需要调用的函数。有关全部详细信息,请参阅 MDN 的文档 - CertainPerformance

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