Я пытаюсь создать (класс) экземпляр, который копирует поведение другого класса, но использует себя как контекст состояния (это). Нормальные функции работают нормально (как функция setValue
в примере ниже), но геттеры не работают. Вот простой пример:
const should = require('chai').should();
class One {
setValue(val) {
this._val = val;
}
get val() {
return this._val;
}
}
class Two {
constructor(one) {
this.one = one;
}
setValue(val) {
this.one.setValue.call(this, val);
}
get val() {
this.one.val.call(this);
}
}
let one = new One();
let two = new Two(one);
one.setValue(1);
two.setValue(2);
one.val.should.equal(1);
two.val.should.equal(2);
Приведенный выше код взрывается в последней строке с ошибкой:
TypeError: this.one.val.call is not a function
at Two.get val [as val] (C:\all\code\node-tests\invoke_getter.js:23:22)
at Object.<anonymous> (C:\all\code\node-tests\invoke_getter.js:32:5)
Как я могу заставить что-то подобное работать?