gpt4 book ai didi

javascript - 谷歌 : "EcmaScript 5 getters and setters for properties are discouraged" Why?

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:33 26 4
gpt4 key购买 nike

根据Google JS style guide不鼓励 getter 和 setter。为什么是这样?

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

最佳答案

因为从外部的 Angular 来看,使用 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"

而且它有效! 但是潜在的计算量大的函数会被调用两次而不是一次。它也可能有副作用(最糟糕的情况,不要使用有副作用的 setter/getter ),当你寻找一个错误并且你不知道它来自哪里时,很难判断。

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

关于javascript - 谷歌 : "EcmaScript 5 getters and setters for properties are discouraged" Why?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40267136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com