tro*_*orl 11 javascript ecmascript-6 babeljs
每次我创建一个类,我都需要做同样的无聊过程:
class Something {
constructor(param1, param2, param3, ...) {
this.param1 = param1;
this.param2 = param2;
this.param3 = param3;
...
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让它更优雅,更短?我使用Babel,因此允许使用一些ES7实验功能.也许装饰者可以帮忙吗?
T.J*_*der 10
你可以使用Object.assign:
class Something {
constructor(param1, param2, param3) {
Object.assign(this, {param1, param2, param3});
}
}
Run Code Online (Sandbox Code Playgroud)
它是一个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...
}
}
Run Code Online (Sandbox Code Playgroud)
示例:( Babel的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);
Run Code Online (Sandbox Code Playgroud)
输出:
a b c
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |