首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >谷歌:“不鼓励使用EcmaScript 5属性的getter和setter”,为什么?

谷歌:“不鼓励使用EcmaScript 5属性的getter和setter”,为什么?
EN

Stack Overflow用户
提问于 2016-10-26 16:06:30
回答 1查看 120关注 0票数 0

根据Google JS style guide的说法,不鼓励使用getter和setter。为什么会这样呢?

Mozilla JS Object docs明确提倡在js中使用getter和setter。我对这种差异感到困惑。

EN

回答 1

Stack Overflow用户

发布于 2016-10-26 16:38:38

因为从外部的角度来看,使用getter和setter可能会让人感到困惑。

假设我创建了一个具有以下属性status的对象myObject。该属性使用getter并计算获得它的结果。示例:

代码语言:javascript
运行
AI代码解释
复制
const status = myObject.status;
const open = status.open; // true
const color = status.color; // "blue"

现在,每次我使用myObject.status 时,看起来我只是访问一个直接的属性,但事实并非如此。实际上,它调用了一个需要大量计算的函数。

现在,另一个没有实现myObject的人进来做这件事

代码语言:javascript
运行
AI代码解释
复制
const open = myObject.status.open; // true
const color = myObject.status.color; // "blue"

但是,一个潜在的计算繁重的函数,被调用两次而不是一次。它也可能有副作用(最坏的情况下,不要使用有副作用的getter),当你寻找一个bug时,你不知道它来自哪里,这是很难说清楚的。

这就是为什么有些人推荐使用const status = myObject.getStatus();。它是一个显式函数调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40267136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档