上篇讲完JS面向对象的特性,我们今天就来聊聊它的其它特性。

JS面向对象的特性较为隐晦,真正使用也是比較少的。而今天我们要讲的,却是在实际开发中常常遇到的特性。

1. 函数式编程

多数人并不知道“函数式编程”是什么鬼!事实上不用怕,要理解“函数式编程”。仅仅须要记住一句话: 函数能够作为变量使用!  

jQuery大家肯定都有使用过,例如以下代码是jQuery绑定事件的方式。正是使用了JS函数式编程的最大特性:函数能够作为变量使用



中间提到了匿名函数,这里简介一下,匿名函数仅仅是普通函数的变体,未定义函数名称而已。可是非常多文章喜欢拿它当做高级特性来讲。搞得大家都认为它好高级!事实上这个特性大家一定经经常使用到,仅仅是忽略了它的“艺名”而已。

2. 闭包

又是一个高大上的词,不明所以的人立刻被吓住!可是请注意,我们已经掌握了一个神器:函数能够作为变量使用。何惧哉?

来看闭包的实例代码:

wx_fmt=png" alt="" style="margin:0px; padding:0px; max-width:100%; height:auto!important">

函数能够作为变量使用。我在方法内部定义了一个变量,是非常正常的写法。

仅仅只是这样的写法,又被人起了个“艺名”: 闭包

3. 回调函数

我们把函数当做变量进行传输,能够使用call & apply 针对函数进行调用,俗称回调

4.匿名自运行函数

刚才我们讲到匿名函数。既然函数没有名字。我们怎样调用它呢? 来看例如以下伪代码:

也就是在匿名函数后面加上“()”就可以运行该方法。可是请别着急。这样定义JS解析器并不能解析。会报Error,所以语法上略微变换一下,变成了鼎鼎大名的jQuery的开篇代码

当然你也能够使用underscore.js的方式,看起来很精妙

wx_fmt=png" alt="" style="margin:0px; padding:0px; max-width:100%; height:auto!important">

5. thiskeyword

我们常常看到在JS代码中出现thiskeyword,因为其函数式编程的特性。this指向的对象常常令我们不解。

要理解其thiskeyword。也有一捷径可循:thiskeyword指向的是运行者。 看例如以下样例:

这里的样例都中规中矩,在实际的开发中。情景要复杂的多,所以要找到thiskeyword的指向是一个很复杂的事情。

万幸,因为其复杂性,非常多人都不愿意使用它,特别是较为复杂的逻辑。毕竟写出看得懂的代码要远远好于高深的代码。

以上这些特性都是“函数式编程”引申出来的话题。所以JS最大的特性无疑是函数式编程,要理解函数式编程。一定要记得:函数能够作为变量使用

本章我们都是针对其特点单独进行解说,你一定感觉不到它的精妙之处!后期将会在其它章节中综合解说。让你深切感受到它的灵活优雅。

更多的静态语言。眼下或多或少的都引入了一些函数式编程的特性!比方Java中的callable,它大大简化了Java的多线程开发,而最新的Java8中的Lambda表达式,全然是函数式编程的模型

讲完了JS的函数式编程,接下来我们将继续JS其它内容的解说。话题涉及设计模式,实际开发,架构等。敬请期待!

恭祝大家。2016新年快乐!

最新文章

  1. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)
  2. 工厂方法(factory method)
  3. android布局--Android fill_parent、wrap_content和match_parent的区别
  4. java代码调用oracle存储过程
  5. The solution to Force.Com IDE 29.0 PassWord Problem
  6. PHP与MySQL动态网站开发2
  7. python之socket模块
  8. 【微服务】之五:轻松搞定SpringCloud微服务-调用远程组件Feign
  9. Make a plan
  10. oracle 12514文件解决
  11. HGOI20181031 模拟题解
  12. crs_register/crs_unregister 注册与移除RAC服务 --zhuanzai
  13. .net web 应用程序C#
  14. 获取hyper-v和vmware虚机状态
  15. .Net Core 迁移之坑一 《WebAPI Get请求参数传入输入带有[]不识别问题》
  16. 【HDU3853】LOOPS [期望DP]
  17. 关于在Java中链接SQLServer数据库中失败的原因分析
  18. ABAP发邮件函数
  19. 大蟒蛇肚子的"风暴"
  20. spring security3.1升级到4.1问题(1)访问/j_spring_security_check 404

热门文章

  1. C语言处理json字符串
  2. bq25896 IINDPM 及 無 IINDPM 時的 regsiter
  3. STL之set的用法
  4. Codeforces 804D Expected diameter of a tree(树的直径 + 二分 + map查询)
  5. TensorFlow——tensorflow指定CPU与GPU运算
  6. django删除表重建&修改用户密码&base64加密解密字符串&ps aux参数说明&各种Error例子
  7. 多核服务器的JVM优化选项(转载)
  8. Java中ArrayList的初始容量和容量分配
  9. Java中String/StringBuffer/StringBuilder区别(转)
  10. Markdown的css样式源码