为了账号安全,请及时绑定邮箱和手机立即绑定

如何减少属性分配的输入(解构,...)?

如何减少属性分配的输入(解构,...)?

慕勒3428872 2021-06-03 17:51:01
如何减少打字: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;    }}但这种语法不起作用
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

而是传入一个对象,然后使用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必须是小写。


您还可以使用参数休息语法,让您在调用时避免重复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);


查看完整回答
反对 回复 2021-06-11
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信