Javascript 使用类似于解构的语法在对象中指定多个值
是否有更干净的方法来设置Javascript 使用类似于解构的语法在对象中指定多个值,javascript,ecmascript-6,Javascript,Ecmascript 6,是否有更干净的方法来设置bar中的a、b和c值。类似于ES6解构赋值语法的东西 bar = { foo: 10, a: 0, b: 0, c: 0, baz: 14 }; myFunc = (myObj) => { const { foo } = myObj; let a, b, c; a = 1 + foo; b = 2 + foo; c = 3 + foo; myObj.a = a; myObj.b = b; myObj
bar
中的a
、b
和c
值。类似于ES6解构赋值语法的东西
bar = { foo: 10, a: 0, b: 0, c: 0, baz: 14 };
myFunc = (myObj) => {
const { foo } = myObj;
let a, b, c;
a = 1 + foo;
b = 2 + foo;
c = 3 + foo;
myObj.a = a;
myObj.b = b;
myObj.c = c;
}
myFunc(bar);
假设
bar
已经在其他地方实例化,我想设置新值,而不创建/分配新对象到bar
。我们可以这样做myObj={…myObj,a,b,c}
,但据我所知,这会将一个新对象分配给条
。ES6没有引入任何使代码更简单的功能。有一个功能可用,但最好不要使用它。
缩短代码的最佳方法是,如果经常重复使用,则将逻辑封装到方法调用中。您可以使用对象文字速记,并反过来构造对象:
const foo = 10;
const a = 1+foo, b = 2+foo, c = 3+foo;
const bar = { foo, a, b, c };
这当然可以简化为
const bar = { foo, a: 1+foo, b: 2+foo, c: 3+foo };
基于,您可以使用
当然了
const { foo } = myObj;
Object.assign(myObj, {a: 1 + foo, b: 2 + foo, c: 3 + foo})
假设它们是常量,那么
constbar={foo:10,a:11,b:12,c:13}怎么样代码>?然而,我认为你真正想要的是我认为你想要的是在每一个新的ES6语法中(比如class
或modules),和是严格禁止的。有充分的理由。谢谢你,利兰。如果可能的话,我想避免将与
一起使用。请查看我的编辑。我们假设bar
是在其他地方创建的。我想简化对bar
中a
、b
和c
的赋值,而无需创建新对象;bar.b=2+foo;bar.c=3+foo代码>。我看不出有什么不对(当然,你的例子有点重复,我想你需要向我们展示你的实际用例)。Object.assign(myObj,{a,b,c})代码>在myFunc
里面为我做的!但愿它更漂亮。
bar = { foo: 10, a: 0, b: 0, c: 0, baz: 14 };
myFunc = (myObj) => {
const { foo } = myObj;
let a, b, c;
a = 1 + foo;
b = 2 + foo;
c = 3 + foo;
Object.assign(myObj, {a: a, b: b, c: c});
}
myFunc(bar);
const { foo } = myObj;
Object.assign(myObj, {a: 1 + foo, b: 2 + foo, c: 3 + foo})