和C++语言一样,JavaScript语言也支持多范式编程。我们常常混合使用这些范式来完成一些大型的Web项目的开发。JavaScript支持的编程范式有:
命令式(Imperative JavaScript) 命令式可以理解成面向过程,是简单的从上至下完成任务,流水账式的编程风格。如下图所示代码:
这样编写代码比较简单,但存在一些明显的问题,比喻可能存在函数名描述性差、命名冲突、变量冗余、复用性差等。 函数式(Functional JavaScript) 示例代码如下: 可以看到,通过数组对象的内置原型方法map和reduce,大大简化了代码,并且如果熟悉了这种风格,其代码的自描述性也很棒。 map和reduce都是高阶函数(能接受函数作为参数,也能返回函数对象)。map函数用来把一组数据依次变换成另外一组数据,而reduce用来汇总数据,下图是对这两个关键函数有趣而直白的描述:
面向对象(Object-Oriented JavaScript) 面向对象的核心思想是把任务抽象成一个(或一组)对象的数据和操作,在C++语言中,这些抽象出来的对象可以便于接口或实现的复用(继承)以及访问控制,在JS中由于没有接口的概念,只能是函数实现的复用。 示例代码如下:
上面的代码创建了一个Task对象,包含公开属性nums,并通过原型定义了2个方法:square和sum,可以在多个对象之间共享,这样将节约内存。另外代码被包含在一个IIAF(immediately-invoked function expression)中,而不再是全局的。除了更符合OO的思维方式外,似乎代码并没有变得更为简洁。 小结 命令式编程是最基础的方式,面向对象的方式适合对现实世界进行抽象封装以及实现访问控制,函数式能最大程度的精简代码且适用于并行计算,而纯净函数(pure function)具有很好的移植性。 |
| 本文出处: http://www.toutiao.com/a6427035022632861953/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|