Ach*_*har 6 javascript getter ecmascript-6
class a {
get b() {
delete this.b;
return this.b = 1;
}
}
var c = {
get b() {
delete this.b;
return this.b = 1;
}
}
console.log(c.b); // works as expected
console.log((new a()).b); // throws error
Run Code Online (Sandbox Code Playgroud)
上面的代码应该工作正常,但最后一行抛出.
未捕获的TypeError:无法设置只有getter(...)的#的属性b
很明显,getter在类中没有被删除,而它在对象中工作正常.我是最新的稳定镀铬.
Ber*_*rgi 13
类的getter位于.prototype对象上,而不是on this,这就是为什么你的尝试delete失败了(而且,正如Jeremy指出的那样,它是不可删除的).
但是,您可以简单地创建上阴影,吸附剂中的实例的自己的财产:
class a {
get b() {
Object.defineProperty(this, "b", { value: 1, writable: false, configurable: true })
return this.b;
}
}
var c = new a;
console.log(c.b); // 1
Run Code Online (Sandbox Code Playgroud)
我们必须使用Object.defineProperty()作为一个简单的赋值,找到没有setter和throws的继承属性.