我在聊天应用程序上使用node.js已经有一段时间了(我知道,非常原始,但我认为这将是一个很好的学习项目)。Underscore.js提供了很多看起来很有趣的函数式编程概念,所以我想了解如何在 JavaScript 中设置函数式程序。
根据我对函数式编程的理解(这可能是错误的),整个想法是避免副作用,这基本上是有一个函数可以更新函数之外的另一个变量,比如
var external;
function foo() {
external = 'bar';
}
foo();
会产生副作用,对吗?因此,作为一般规则,您希望避免在全局范围内干扰变量。
好的,那么当您处理对象时,它是如何工作的呢?例如,很多时候,我会有一个构造函数和一个初始化对象的 init 方法,如下所示:
var Foo = function(initVars) {
this.init(initVars);
}
Foo.prototype.init = function(initVars) {
this.bar1 = initVars['bar1'];
this.bar2 = initVars['bar2'];
//....
}
var myFoo = new Foo({'bar1': '1', 'bar2': '2'});
所以我的 init 方法是故意造成副作用的,但是处理同样情况的功能性方法是什么?
此外,如果有人能指出我试图尽可能地发挥功能的程序的 Python 或 JavaScript 源代码,那也将不胜感激。我觉得我接近“得到它”,但我只是不完全在那里。主要是我对函数式编程如何与传统的 OOP 类概念一起工作感兴趣(或者如果是这样的话,就为了不同的东西而取消它)。