JavaScript 中的私人 (#) getter
Private (#) getter in JavaScript
是否计划在 JavaScript 中支持私有 getters/setters?
class Next {
#private = 0
get #computed() { // SyntaxError: Unexpected token (
return this.#private + 1
}
}
如果不是,那背后的理由是什么?
我想实施不会成为障碍。对功能本身有异议吗?
是的,它们是 private methods and accessors proposal, a follow-on to class fields 的一部分。语法与您展示的完全一样。 JavaScript 引擎正在积极地实现它们,Babel 已经通过 @babel/plugin-proposal-private-methods
插件为它们进行了工作转换。
这两个提案由 static class features proposal 合并,涵盖静态 public 属性、静态私有字段和静态私有方法(包括访问器)。
更新 - ECMAScript 2021
使用最新的 es2021 版本也可以使用私有 getter 和 setter。
您的代码现在应该有效了:
class Next {
#private = 0
get #computed() {
return this.#private + 1
}
}
是否计划在 JavaScript 中支持私有 getters/setters?
class Next {
#private = 0
get #computed() { // SyntaxError: Unexpected token (
return this.#private + 1
}
}
如果不是,那背后的理由是什么?
我想实施不会成为障碍。对功能本身有异议吗?
是的,它们是 private methods and accessors proposal, a follow-on to class fields 的一部分。语法与您展示的完全一样。 JavaScript 引擎正在积极地实现它们,Babel 已经通过 @babel/plugin-proposal-private-methods
插件为它们进行了工作转换。
这两个提案由 static class features proposal 合并,涵盖静态 public 属性、静态私有字段和静态私有方法(包括访问器)。
更新 - ECMAScript 2021
使用最新的 es2021 版本也可以使用私有 getter 和 setter。
您的代码现在应该有效了:
class Next {
#private = 0
get #computed() {
return this.#private + 1
}
}