我今天正在搞乱ES6语法,并组成了这个基本的测试类:
class Animal {
constructor(type, age, name = "Unnamed Animal") {
this.type = type;
this.age = age;
this.name = name;
}
talkToMe() {
console.log(`Hi, my name is ${this.name}, and I am a ${this.type}!`);
}
}
有没有办法使用新的ES6语法使构造函数更简洁?也许是某种东西,比如
constructor(type, age, name = "Unnamed Animal") {
this = {type, name, age};
}
答案 0 :(得分:3)
我打算说"不"因为我非常肯定你的代码很简单,但我记得Object.assign
并且能够使用object constructor shorthand syntax。
如果您要设置 lot 属性,可以将它们全部分配为:
constructor(type, age, name = "Unnamed Animal") {
Object.assign(this, {
type,
age,
name
});
}
这个 会受到性能影响,我认为就可读性而言,它是平等的,但如果键入this.prop = prop
对你很烦,那么< em>是的替代品。
就个人而言,我坚持:
this.name = name;
this.age = age;
this.type = type;
答案 1 :(得分:2)
您可以使用Object.assign一次完成所有三项作业:
constructor(type, age, name = "Unnamed Animal") {
Object.assign( this, { type, name, age } );
}
答案 2 :(得分:1)
是的,您可以使用Object.assign
:
class Animal {
constructor(type, age, name = "Unnamed Animal") {
Object.assign(this, {type, name, age});
}
talkToMe() {
console.log(`Hi, my name is ${this.name}, and I am a ${this.type}!`);
}
}
new Animal('elephant', '5', 'Dumbo').talkToMe();
有proposal允许类似
的内容this .= {type, name, age};