ecmascript-6 - 覆盖 es6 类实例的 getter
问题描述
在此示例中,我尝试使用缓存值覆盖 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;
}
}
解决方案
你应该使用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;
}
}
推荐阅读
- javascript - ScrollMagic + SmoothScroll 口吃
- typo3 - 如何重新排序“Typo3 列表模块中的列列表”
- jquery - 禁用输入,动态隐藏div时选择属性
- java - Java:错误处理不佳,最终抛出
- c++ - 现代 C++ 编译器是否优化了对类的同一数据成员的重复访问?
- r - 如何将自定义 R/Python 代码与 KNIME 集成?
- c++ - 连接 -> Window 上没有这样的插槽
- java - JVM 指令 - sload
- javascript - 正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性
- tsql - EXEC 函数截断要执行的字符串变量