如何减少以下内容的输入:

class C {
    Constructor(a,b,c,d,e,f) {
       this.a=a;
       this.b=b;
       this.c=c;
       this.d=d;
       this.e=e;
    }
}


做这样的事情:

class C {
    Constructor(param: [a,b,c,d,e,f]) {
       this=param;
    }
}


但是这种语法不起作用

最佳答案

而是传入一个对象,然后使用Object.assign



class C {
  constructor(obj) {
    Object.assign(this, obj);
  }
}

const c = new C({ a: 'a', b: 'b', c: 'c', d: 'd', e: 'e' });
console.log(c);





请注意,constructor必须小写。

您还可以使用参数rest语法,从而在调用new C时避免重新排列:



class C {
  constructor(...args) {
    const props = ['a', 'b', 'c', 'd', 'e'];
    const obj = Object.fromEntries(
      args
        .slice(0, 5)
        .map((val, i) => [props[i], val])
    );
    Object.assign(this, obj);
  }
}

const c = new C('a', 'b', 'c', 'd', 'e');
console.log(c);





如Bergi所述,您还可以在Array.prototype.entries上调用props以获得更少的代码:



class C {
  constructor(...args) {
    const props = ['a', 'b', 'c', 'd', 'e'];
    for (const [i, prop] of props.entries()) {
      this[prop] = args[i];
    }
  }
}

const c = new C('a', 'b', 'c', 'd', 'e');
console.log(c);

关于javascript - 如何减少类型的属性分配(销毁,…)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56317193/

10-11 05:53