每次创建某个类时,都需要执行相同的无聊过程:
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/