【发布时间】:2018-03-28 00:29:32
【问题描述】:
我有一个代码设计问题。考虑以下代码:
thatObj.doThis().setThat().add().update();
为了允许链接,我经常写return this;,有时,我在这里或那里忘记这样做,然后我得到一个错误。
在许多情况下,我并不是要求特定结果(例如 thatObj.getName() 或 thatObj.getChildren()),而是想要进行一些更新或调用设置器(例如 thatObj.setName("foo") 或 thatObj.addChild(child) 或 thatObj.update() ),我想知道 return this; 对于任何方法调用是否更方便,我的意思是作为 javascript 默认行为,如果不是,不这样做的原因可能是什么。
【问题讨论】:
-
不太可能发生对 JavaScript 行为的彻底改变。
-
最好的办法是创建一个可以扩展的类并提供你想要的接口
-
一堂课?但是我说的是每个对象的每个方法,为了避免写
return this,从现在开始说JS总是会从任何方法返回this是个好主意吗? @Pointy,是的,我也这么认为,但我一直在想,这种 JS 设计的缺点可能是什么。顺便说一句,适用于任何面向对象的编程语言。这是一个宽泛的问题,涉及性能、优化等。可能过于宽泛,无法用几句话来回答。 -
这将基于这样的假设,即该通用编程语言的默认编码样式将是具有很多副作用的流畅(链接)样式。有些人选择创建链式接口。不是每个人都这样做。并非所有链接接口都基于返回
this,因此即使在想要创建链接接口的人的子集中,也只有一部分人会从这种非常特殊的行为中受益。我几乎从不在 JavaScript 中使用this,因为它的行为很奇怪,所以我对这种默认行为完全没有兴趣。 -
您的问题基本上可以归结为“从根本上改变一种语言以适应我的个人编码风格是否有任何不利之处”?是的,你不是所有人。
标签: javascript ecmascript-next