如何减少以下内容的输入:
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/