1 回答

TA貢獻1874條經(jīng)驗 獲得超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必須是小寫。
您還可以使用參數(shù)休息語法,讓您在調(diào)用時避免重復(fù)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筆記,你也可以調(diào)用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);
添加回答
舉報