gpt4 book ai didi

javascript - 为什么在 JavaScript 构造函数中使用副作用是不好的做法?

转载 作者:数据小太阳 更新时间:2023-10-29 03:52:15 24 4
gpt4 key购买 nike

我使用了与设计模式非常相似的东西 custom objects通常在我的代码中。

但是 JSLint 不赞成这样的结构:

function MyClass() { this.init(); }
new MyClass(data);

因为对象在创建后立即被丢弃 - 它没有被用于任何事情。我们可以通过将它分配给一个变量来欺骗 JSLint 忽略它,但这并没有改变 JSLint(我猜很多 JavaScript 爱好者)不鼓励这种模式。

那么为什么在 JavaScript 构造函数中使用副作用被视为一种不好的做法?

就其值(value)而言,我认为这是一个好的做法,因为:

  1. 你有一个设置函数,因此它应该更容易维护,例如您正在管理一个 MyClass 实例列表以供以后访问。 (将对象插入数组是一种副作用,您必须在构造函数返回后才这样做,因为“良好实践”= 更难维护。)
  2. 它有自己的原型(prototype),因此是“类所有权”:Firebug 将其报告为 MyClass 的实例,而不仅仅是 Object。 (在我看来,这使其优于其他设计模式。)

最佳答案

Robert Martin 在他的Clean Code一书中说

Side effects are lies. Your function promises to do one thing, but it also does other hidden things...they are devious and damaging mistruths that often result in strange temporal couplings and order dependencies.

您在评论中描述的有关数组的内容听起来像是“奇怪的时间耦合”。

关于javascript - 为什么在 JavaScript 构造函数中使用副作用是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14694982/

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