6中较短的类初始化

6中较短的类初始化

每次创建某个类时,都需要执行相同的无聊过程:

class Something {
  constructor(param1, param2, param3, ...) {
    this.param1 = param1;
    this.param2 = param2;
    this.param3 = param3;
    ...
  }
}


有什么方法可以使其更优雅,更短?我使用Babel,因此允许使用某些ES7实验功能。也许装修师可以帮忙吗?

最佳答案

您可以使用Object.assign

class Something {
  constructor(param1, param2, param3) {
    Object.assign(this, {param1, param2, param3});
  }
}


这是一种ES2015(又称ES6)功能,可将一个或多个源对象自己的可枚举属性分配给目标对象。

当然,您必须两次编写arg名称,但至少要短得多,并且如果将其建立为惯用语,那么当您在实例上有想要的参数而其他不需要的参数时,它就可以很好地处理它。 :

class Something {
  constructor(param1, param2, param3) {
    Object.assign(this, {param1, param3});
    // ...do something with param2, since we're not keeping it as a property...
  }
}


示例:(live copy on Babel's REPL):

class Something {
  constructor(param1, param2, param3) {
    Object.assign(this, {param1, param2, param3});
  }
}
let s = new Something('a', 'b', 'c');
console.log(s.param1);
console.log(s.param2);
console.log(s.param3);


输出:

一个
b
C

关于javascript - ECMAScript 6中较短的类初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39356366/

10-09 22:23