Reflect.set
здесь для вашего спасения!Это позволяет передавать приемник отдельно:
setX() {
Reflect.set(Parent.prototype, "x", 0, this.child); // invokes the Parent.protype.x setter
}
Альтернативы могут быть Object.getOwnPropertyDescriptor(Parent.prototype, "x").set.call(this.child, 0)
или просто this.child._x = 0
(если вам не нужно запускать установочный код).
Так что, пока это возможно, я бы порекомендовал пересмотреть ваш дизайн.Может быть, наследование - это неправильный подход, и вы должны использовать состав вместо extends Parent
:
class Child {
constructor() {
this.val = new Parent();
}
set x(v) {
… // Shenanigans
this.val.x = v;
}
get x() {
return this.val.x;
}
// (without the Prop helper class for simplicity)
setX(v) {
// without shenanigans
this.val.x = v;
}
}