在Javascript中,直接或通过原型链将方法附加到对象上非常容易。我使用的许多库都有这种行为。例如AngularJS的$resource库,返回的对象上具有一些神奇的方法,如.$save()和.$delete(),这些方法会触发向服务器发送请求。
然而,在使用Clojure一段时间后,我已经开始喜欢将数据结构传递到函数中以触发行为的方法,并且在我的下一个JavaScript项目中,我考虑尝试以这种风格编写它。
我的问题是,采用这两种编程方式的利弊是什么?
将方法直接附加到对象上(结果通常会在现有对象中进行变异)与将对象作为纯数据结构传递到函数中,在处理后返回新数据结构之间的利弊是什么?
我意识到在AngularJS中,要利用双向绑定,通常需要使用第一种系统,但似乎像React这样的框架可以利用无论是在原地变异还是使用新对象实例的方式。
然而,在使用Clojure一段时间后,我已经开始喜欢将数据结构传递到函数中以触发行为的方法,并且在我的下一个JavaScript项目中,我考虑尝试以这种风格编写它。
我的问题是,采用这两种编程方式的利弊是什么?
将方法直接附加到对象上(结果通常会在现有对象中进行变异)与将对象作为纯数据结构传递到函数中,在处理后返回新数据结构之间的利弊是什么?
我意识到在AngularJS中,要利用双向绑定,通常需要使用第一种系统,但似乎像React这样的框架可以利用无论是在原地变异还是使用新对象实例的方式。
function foo(){ }
才会变成window.foo
。 - Oriol