Javascript 类属性:访问父构造函数中的子类属性
我想构建一个ES6类,它可以在构造函数级别读取它的子属性。换句话说,我希望通过以下规范:Javascript 类属性:访问父构造函数中的子类属性,javascript,ecmascript-next,Javascript,Ecmascript Next,我想构建一个ES6类,它可以在构造函数级别读取它的子属性。换句话说,我希望通过以下规范: class Collection { model = 'model'; constructor() { // I JUST DO A SIMPLE ASSIGNMENT HERE // BUT IN THE FINAL VERSION I WOULD // LIKE TO DO SOME MORE ADVANCED // CALCULATIONS HERE
class Collection {
model = 'model';
constructor() {
// I JUST DO A SIMPLE ASSIGNMENT HERE
// BUT IN THE FINAL VERSION I WOULD
// LIKE TO DO SOME MORE ADVANCED
// CALCULATIONS HERE
this.modelCopy = this.model;
}
getModel() {
return this.model;
}
}
class MyCollection extends Collection {
model = 'myModel';
}
it('this is passing', () => {
expect(new Collection().getModel()).toBe('model');
expect(new MyCollection().getModel()).toBe('myModel');
});
it('this is NOT passing', () => {
expect(new Collection().modelCopy).toBe('model');
// this fails because new MyCollection().modelCopy === 'model'
expect(new MyCollection().modelCopy).toBe('myModel');
});
类属性不是本机处理的。到目前为止,他们已经被巴贝尔的改变了 如果这个插件在调用
constructor()
后将类属性转换为值并初始化,那么对此您无能为力
我在他们的github中看到cleary声明了这种方法:
对。在调用super()
之前不能执行此操作,因为这是super的返回值。以前,它不存在,因此无法定义类字段
[UPD]规范就在这里:但我没有找到关于是否建议在本机实现中采用这种方法的信息。您能否澄清当前的行为和预期的行为?这些断言是前者吗?那么后者是什么呢代码>无效JS@NurbolAlpysbayev当前行为是
newmyCollection().modelCopy
返回'model'
。而我想得到myModel
@skyboyer的回答似乎清楚地解释了这个问题。我无法用类属性实现我想要的。我需要考虑不同的构造。如果你使用类属性,那么你就不使用ES6。