【发布时间】:2019-05-21 17:50:32
【问题描述】:
我想构建一个 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
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');
});
【问题讨论】:
-
您能澄清一下当前的行为和预期的行为吗?断言是前者吗?那么后者是什么。
-
另外
model = 'myModel';不是有效的JS -
@NurbolAlpysbayev 当前行为是
new MyCollection().modelCopy返回'model'。虽然我想得到myModel。 @skyboyer 的回答似乎清楚地解释了这个问题。我无法通过类属性实现我想要的。我需要考虑不同的结构。 -
如果你使用的是类属性,那么你没有使用 ES6。
标签: javascript ecmascript-next