kha*_*iuk 5 javascript getter getter-setter ecmascript-6
本文介绍吸气剂。它有一个“智能/自我覆盖/惰性获取器”部分,对我来说还不清楚,默认情况下“获取”获取器是“记忆”还是我应该自己实现此功能
例如
class Foo() {
get boo() {
this._boo = this._boo || new Boo();
return this._boo;
}
}
Run Code Online (Sandbox Code Playgroud)
或者我可以写:
class Foo() {
get boo() {
return new Boo();
}
}
Run Code Online (Sandbox Code Playgroud)
有相同的结果?
那篇文章中最有趣的一点是Smart / self-overwriting / lazy getters,它提供了这种技术:
class Foo {
get boo() {
delete this.boo;
return this.boo = new Boo();
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,您的Foo对象在boo您要求之前不会经历创建它们的属性的麻烦。然后它被创建一次,对它的进一步请求只是返回相同的对象。如果new Boo()以某种方式创建资源密集型并且通常不需要,这是有道理的。
理论上,您可以扩展它以允许您删除当前版本并在下次访问时重新创建它。但这需要更多的代码,而且可能是相当罕见的需求。
vrugtehagel的评论正确地指出,上述技术虽然适用于普通对象,但不适用于类。
这是一个有效的变体:
class Foo {
get boo() {
delete this.boo;
return this.boo = new Boo();
}
}
Run Code Online (Sandbox Code Playgroud)