根据Google JS style guide的说法,不鼓励使用getter和setter。为什么会这样呢?
Mozilla JS Object docs明确提倡在js中使用getter和setter。我对这种差异感到困惑。
发布于 2016-10-26 16:38:38
因为从外部的角度来看,使用getter和setter可能会让人感到困惑。
假设我创建了一个具有以下属性status
的对象myObject
。该属性使用getter并计算获得它的结果。示例:
const status = myObject.status;
const open = status.open; // true
const color = status.color; // "blue"
现在,每次我使用myObject.status
时,看起来我只是访问一个直接的属性,但事实并非如此。实际上,它调用了一个需要大量计算的函数。
现在,另一个没有实现myObject的人进来做这件事
const open = myObject.status.open; // true
const color = myObject.status.color; // "blue"
但是,一个潜在的计算繁重的函数,被调用两次而不是一次。它也可能有副作用(最坏的情况下,不要使用有副作用的getter),当你寻找一个bug时,你不知道它来自哪里,这是很难说清楚的。
这就是为什么有些人推荐使用const status = myObject.getStatus();
。它是一个显式函数调用。
https://stackoverflow.com/questions/40267136
复制相似问题