Вот простой код JavaScript:
class Test {
constructor(val) {
this._value = val;
this.child = {
get value() { return this._value; },
getValue: () => { return this._value; }
};
}
}
let o = new Test(1);
console.log(o.child.value);
console.log(o.child.getValue());
Выходные данные:
undefined
1
В дочернем объекте child
я хочу заставить получатель get value()
произвестито же значение, что и у лямбды getValue()
, то есть для правильного захвата this
родителя и получения 1
, а не undefined
.
Есть ли элегантный способ сделать это в class
?Или я должен использовать лямбду и отказаться от геттера?
Я мог бы, вероятно, сделать это:
this.child = {
parent: this,
get value() { return this.parent._value; },
};
Однако я не хочу выставлять child.parent
, только child.value
.