Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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 JS ES6:通过解构将参数作为对象获取_Javascript_Ecmascript 6_Destructuring - Fatal编程技术网

Javascript JS ES6:通过解构将参数作为对象获取

Javascript JS ES6:通过解构将参数作为对象获取,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,是否可以使用解构将函数的参数作为对象获取(以便在其上迭代) function({a=1, b=2, c=3}={}) { // how to get {a:1, b:2, c:3}? } 我的目标是将每个参数绑定到类构造函数中的this 无需破坏结构即可实现: class Test { constructor(args) { Object.assign(this, args); } } 但我不知道如何简化: class Test { constructor({a=1,

是否可以使用解构将函数的参数作为对象获取(以便在其上迭代)

function({a=1, b=2, c=3}={}) {
  // how to get {a:1, b:2, c:3}?
}
我的目标是将每个参数绑定到类构造函数中的
this

无需破坏结构即可实现:

class Test {
  constructor(args) {
    Object.assign(this, args);
  }
}
但我不知道如何简化:

class Test {
  constructor({a=1, b=2, c=3}={}) {
    this.a = a;
    this.b = b;
    this.c = c;
  }
}

let test = new Test();
// test.a = 1 
// test.b = 2 etc.

您可以使用对象创建的速记形式执行此操作:

class Test {
  constructor({a=1, b=2, c=3}={}) {
    Object.assign(this, {a, b, c});
  }
}
例如:

类测试{
构造函数({a=1,b=2,c=3}={}){
赋值(这个,{a,b,c});
}
}
常数t1=新测试();
log(“t1:”,t1.a,t1.b,t1.c);
常数t2=新测试({b:42});

控制台日志(“t2:”,t2.a,t2.b,t2.c)
那么你想让你的调用者用一个对象调用这个函数吗?虽然我在下面为你发布了一个选项,但是我可以说,
this.a=a表单很好而且清晰,易于阅读,易于调试…我明白了。但是当有很多参数时,可能会有点不方便。很好!无法使用等价的
参数访问对象?@hhh:不处理默认值,否。传入的对象确实可用作
参数[0]
,但以其原始形式,并且只有在传入时才可用。确定!谢谢你,这就是我提问的目的@hhh:我刚刚为您更新了一个备选方案,我想您可能会更喜欢。但不使用解构。