gpt4 book ai didi

javascript - 为什么我不应该直接访问实例属性进行写操作?

转载 作者:行者123 更新时间:2023-11-30 12:37:08 25 4
gpt4 key购买 nike

所以我读了这个blog entry最近。作者说:

Although directly accessing and setting properties on instances still sets off my internal bad-javascript buzzer. Over time I have been trained by bugs and technical debt to avoid arbitrarily setting values on instances as a means to pass information around.

我以前听过这个建议,但我仍然不知道它有什么特别不好的地方。

我看到了在实际设置值之前验证值的可能性,但我应该如何处理错误的值?这是改用 setter 的唯一原因吗?

最佳答案

(对我而言)始终使用 getter 和 setter 而不是直接访问属性的最重要原因是您始终可以在以后的某个时间点更改它们的行为方式。

因此,如果您发布具有 Cat 类和 setName 方法的产品或库,您始终可以决定设置名称应该做任何额外的事情将来。例如写入日志文件“名称已设置”或其他更有效的内容。

如果你不使用 setter,你就会陷入困境,因为你的库的所有用户都直接使用属性 name 所以你注定要永远保留该属性并保留它的名称,永远不会改变任何关于它的东西我们都会破坏你的用户过去用它构建的一切。

所以它对于其他人使用的公共(public) API 来说是最重要的。如果你留在内部,你仍然会在代码中有一个集中点来改变行为。

看区别:

 myCat.name = "Silvester"

如果您的代码中出现了 5 次,并且您想向其中添加字符串“Cat:”,您将必须找到所有出现的地方并向其添加“Cat:”。

如果您使用:

 myCat.setName("Silvester");

只有一个地方可以更改,您可以轻松找到它,而且您的用户甚至不会注意到您更改了什么。

关于javascript - 为什么我不应该直接访问实例属性进行写操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25742973/

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