Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用类似于解构的语法在对象中指定多个值_Javascript_Ecmascript 6 - Fatal编程技术网

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})