在此示例中,我尝试使用缓存的值覆盖getter。
它不起作用。
是否可以覆盖类实例的getter?
class Module {
constructor(id) {
this.id = id
}
get element() {
const elm = document.getElementById(id)
if(!elm) throw new Error(`#${id} is not in document`)
delete this.element;
this.element = elm;
return elm;
}
}
答案 0 :(得分:2)
您应该使用Object.defineProperty()
:
class Module {
constructor(id) {
this.id = id
}
get element() {
const elm = document.getElementById(this.id)
if(!elm) throw new Error(`#${id} is not in document`)
Object.defineProperty(this, 'element', {
value: elm,
});
return elm;
}
}