说我有这个班级
class banana {
constructor(weight) {
this.weight = weight;
}
}
banana.prototype.type = "fruit";
所以不同的香蕉有不同的重量,但所有香蕉都是水果,因此我想在原型而不是实例中添加“type = fruit”。
我不喜欢在类声明结束后不得不这样做,为了便于阅读,我最好将方法和原型变量保持在一起。
在类括号内是否有语法?排序类似
class banana {
type = "fruit" <- doesn't work of course
constructor(weight) {
this.weight = weight;
}
}
答案 0 :(得分:2)
在类语句中,只允许使用方法,不允许任何赋值。 因此,如果要设置类型,则必须在构造函数中进行设置,如下所示:
class banana {
constructor(weight) {
this.weight = weight;
this.type = "fruit";
}
}
如果你不想这样做,那么你也可以将你的常数定义为一个函数,但这对我来说有点不好意思:
class banana {
constructor(weight) {
this.weight = weight;
}
static type() {return "fruit";}
}
答案 1 :(得分:0)
你可以在构造函数中设置它:
class Banana {
constructor() {
this.type = 'fruit';
}
}
或者你可以有一个Fruit类,其中Banana是一个子类:
class Fruit {
constructor() {
this.type = 'fruit';
}
}
class Banana extends Fruit {
constructor() {
super();
}
}
或者,如果您正在使用Babel,则可以添加transform-class-properties plugin:
class Banana {
type = 'fruit';
}
// .babelrc
{
"plugins": [[
"transform-class-properties"
]]
}
答案 2 :(得分:0)
您可以定义一个小辅助函数:
const Type = prototype => Object.assign(function(){}, {prototype});
然后扩展它:
class Test extends Type({some:"prop"}) {
constructor(){
super();
//...
}
//...
}