【发布时间】:2019-12-28 19:49:05
【问题描述】:
在类构造函数内部或外部编写属性有什么区别?
例如,这两个例子中写属性“legs”有什么区别:
1)
class Rabbit{
constructor(){
this.legs= 4
}
}
2)
class Rabbit{
legs = 4;
}
【问题讨论】:
标签: javascript class javascript-objects
在类构造函数内部或外部编写属性有什么区别?
例如,这两个例子中写属性“legs”有什么区别:
1)
class Rabbit{
constructor(){
this.legs= 4
}
}
2)
class Rabbit{
legs = 4;
}
【问题讨论】:
标签: javascript class javascript-objects
第二个选项需要babel-plugin-proposal-class-properties插件,第一个不需要。
【讨论】:
要在类中动态使用property。这样想,只要class 用任何值实例化,constructor 就会更改或分配属性。并且构造函数之外的属性是默认的。如果我们不在类中编写任何构造函数定义,它将无法在实例化中获取新值。每当我们实例化该类时,都会触发构造函数/方法,它将根据需要或想要的方式构造所有内容。
class Rabbit{
legs= 4
constructor(lg){
this.legs= lg
}
}
const r = new Rabbit(2);//we override its value 4 to 2
和
class Rabbit{
legs = 4;
}
const r = new Rabbit(3);//we don't override its value 4 to 3,it will be 4
【讨论】:
class Rabbit{ constructor(lg = 4){ this.legs= lg } }