【发布时间】:2020-08-02 05:16:17
【问题描述】:
假设我有一个带有 getter 和 setter 的对象。
const obj = {
a: 0,
get a(){
return this.a;
}
}
我会收到错误Maximum call stack size exceeded at Object.get a [as a]。我可以将 a 变量命名为不同的名称,但一段时间后它会变得混乱。
我可以在它前面加上下划线或类似的东西:
const obj = {
_a: 0,
get a(){
return this._a;
}
}
我想知道是否有处理此问题的行业标准?使用下划线不是正确的方法,因为它们象征着其他事物吗?处理此问题的推荐方法是什么,或者它是由开发人员决定的事情之一?
我只是不想走上错误的道路,也无法真正找到关于此事的明确答案。
谢谢。
【问题讨论】:
-
您试图通过使用 getter 来解决什么问题?这些属性无论如何都不是私有的,任何人都可以直接
obj.a。 -
首先想到的是数据验证。即使可以使用底层变量,您也不应该使用,这通常是关于类/组件的文档的一部分。无论成员访问器功能如何,Getter/setter 都非常出色。
-
@ajobi 这只是为了便于演示我正在创建一个系统来监听变量的变化。
-
AFAIK,不。没有办法将 setter 和 getter 命名为与您的属性相同的名称。
-
@RashadKokash 我显然知道我不能给他们起同样的名字。这就是问题的全部原因。
标签: javascript