便于javascript编程模式的问题?

js是一种面向对象编程的语言,那么日常中什么样的编码方式属于面向对象,什么又是函数式编程呢?
可以分别举例吗?
这是我理解的函数式编程:

var page = {
    init : function(){
        this.onLoad();
        this.bindEvent();
    },
    onLoad : function(){
        code here;
    },
    bindEvent : function(){
        code here;
    }
}
$(function(){
    page.init();
});
阅读 2.3k
2 个回答

除了面向对象,函数式之外,还有一个面向过程。常用语言中,这三种方法都是混用的,并不是在用哪一种。

  • 面向过程是大家最初学习的程序概念,也就是顺序、分支、循环
  • 面向对象的典型思维是什么东西/谁(对象),干了什么(方法)
  • 函数式的典型思维是由什么样的输入,得到什么样的输出,即数学中的 g = f(x)

一个例子

// OOP
obj.run1();
obj.run2();
obj.run3();
// Functional
run3(run2(run1(obj)))
// 有机结合
obj.run1().run2().run3()

可以看出来,OOP 就是在说对象干什么;函数式就是在不断的计算(使用 Excel 公式的时候就是这个感觉);当调用对象方法得到一个计算结果,再基于这个结果继续调用后续方法的时候(链式),严格的说是 OOP,但也具备了函数式连续运算的特征,所以可以看作是有机结合。

js当时设计的时候并不像传统的面向对象编程语言。你可以去看看underscore的语法,他有一种语法是
_.each(arr);也可以是_(arr).each(); 如果没记错的话,前面那种就是函数式编程,后面那种是面向对象

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题