《JavaScript函数式编程思想》——从面向对象到函数式编程

第9章  从面向对象到函数式编程

假如本书的写作时间倒退回十年前,书名可能会变成JavaScript面向对象编程思想。自上世纪90年代兴起的面向对象编程思想随Java的繁荣达于顶点,在JavaScript从一门只被用来编写零星的简单的表单验证代码的玩具语言变成日益流行的Web应用不可取代的开发语言的过程中,脚本的作者们也逐渐学习和习惯了被视为软件开发正统的面向对象编程。等到盛极而衰,面向对象编程的缺点开始浮现和被广泛讨论,Java的热度和市场份额不及以往,而对函数式编程的兴趣和关注从学术圈子扩散至商业软件开发领域,Clojure、Erlang、Scala等新的函数式编程语言被发明和获得市场接纳,Lambda表达式成为编程语言中的热词和老牌语言竞相增添的功能,JavaScript程序员也开始认识到函数式编程的优点。幸运的是,函数式编程所需的基本能力JavaScript在诞生之初就具备了,在迄今二十多年的历史中,JavaScript发扬光大的是事件编程和在面向对象编程世界里长久被忽略的基于原型的对象模型,现在它作为最流行和有活力的编程语言之一,正在逐渐发掘和转向自身混合基因中的另一元素。虽然以函数式编程语言的标准来看,JavaScript相比其他专为此设计的语言有不少不足和缺陷,但是它的普及度还是让它成为函数式编程的有力推动者甚至有希望是这种范式应用最广泛的语言。

从现实来看,巨大的惯性、既有的代码、程序员的知识和思维习惯使得面向对象编程依然是JavaScript开发的主流。此外,自ECMAScript 6原来的诸次语言扩展和改进主要是增强面向对象编程能力的。所以提倡JavaScript的函数式编程,不可避免的问题或者说最有力的方法就是将之与面向对象编程做比较,解释前者的优点,说明后者的概念和做法如何能用前者取代。

9.1  面向对象编程的特点
9.1.1  封装性
9.1.2  继承性
9.1.3  多态性
9.2  JavaScript面向对象编程
9.2.1  创建和修改单个对象
9.2.2  克隆和复制属性
9.2.3  原型
9.2.4  建构函数
9.2.5  建构函数和类型继承
9.2.6  原型和类型继承
9.2.7  Proxy和对象继承
9.2.8  Mixin
9.2.9  工厂函数

9.3  函数式编程的视角

在上一节里,我们介绍了JavaScript面向对象编程的种种模式和风格,充分体现了JavaScript的灵活性。程序员可以选择自己喜欢和习惯的编程模式,造就了JavaScript代码五彩纷呈的风格。然而从函数式编程的视角来看,这些编程模式和技巧就有了好坏之分,有些在函数式编程中还有用武之地,大部分则被理念不同的函数式编程的模式替代。

9.3.1  不可变的对象

面向对象编程的出发点是将数据和处理它们的函数封装成对象

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值