JavaScript全讲-必知的特性
上篇讲完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新年快乐!
JavaScript全讲-必知的特性的更多相关文章
- JavaScript必知的特性(继承)
多数人在学习JavaScript的时候.都是做Web的时候.须要表单验证.或者是一些简单的DOM操作,如同我上篇所讲.处在一个"辅助"的地位. 处在"辅助"地位 ...
- JavaScript全讲-架构原则解析
因为近期一直在忙,非常久没有更新,见谅. 上篇我们讲完JavaScript函数式编程的特性,今天我们就来聊聊JavaScript中的架构. 提到JavaScript架构.非常多人会认为不可思议,由于架 ...
- JavaScript基础知识必知!!!
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. JS作用:表单验证,减轻服务端的压力:添加页面动画效果:动态更改页面内容:Ajax网络请求. 下面简单介 ...
- JavaScript开发人员必知的10个关键习惯
还在一味没有目的的编写JavaScript代码吗?那么你就OUT了!让我们一起来看看小编为大家搜罗的JavaScript开发人员应该具备的十大关键习惯吧! 随着新技术的不断发展,JavaScript已 ...
- 15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码)
15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码) 前言 设计模式是一个程序员进阶高级的必备技巧,也是评判一个工程师工作经验和能力的试金石.设计模式是程序员多年工作经 ...
- 【EatBook】-NO.1.EatBook.1.JavaData.1.001-《JSON 必知必会-Introduction to JavaScript Object Notation》-
1.0.0 Summary Tittle:[EatBook]-NO.1.EatBook.1.JavaData.1.001-<JSON 必知必会-Introduction to JavaScrip ...
- 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别
高效开发之SASS篇 作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...
- Visual Studio (VS IDE) 你必须知道的功能和技巧 - 【.Net必知系列】
前言 本文主要阐述一些Visual Studio开发下需要知道的少部分且比较实用的功能,也是很多人忽略的部分.一些不常用而且冷门的功能不在本文范围,当然本文的尾巴[.Net必知系列]纯属意淫,如有雷同 ...
- 开发者必知的8款App快速开发工具
开发者必知的8款App快速开发工具 “我有一个好创意,就差一个CTO……” “原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了.” “APP版本迭代更新,都是企业的一道难关,没有一个一劳 ...
随机推荐
- bzoj 1038 瞭望塔 半平面交+分段函数
题目大意 给你一座山,山的形状在二维平面上为折线 给出\((x_1,y_1),(x_2,y_2)...(x_n,y_n)\)表示山的边界点或转折点 现在要在\([x_1,x_n]\)(闭区间)中选择一 ...
- codeforces 446C DZY Loves Fibonacci Numbers 数论+线段树成段更新
DZY Loves Fibonacci Numbers Time Limit:4000MS Memory Limit:262144KB 64bit IO Format:%I64d &a ...
- 【BZOJ4555】【TJOI2016】【HEOI2016】求和 (第二类斯特林数+NTT卷积)
Description 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: $$f(n)=\sum_{i=0}^n\sum_{j=0}^i S(i,j)\tim ...
- Java手机游戏开发简明教程 (SunJava开发者认证程序员 郎锐)
原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Java手机游戏开发实例简明教程 (SunJava开发者认证程序员 郎锐)一、手机游戏编写基础1.手机游戏设计的基 ...
- 标准C程序设计七---56
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- 反汇编->C++虚函数深度分析
先来查看一简单例子 #include<iostream> using namespace std; class Base{ public: virtual void f() { cout ...
- hdu 4183(网络流)
Pahom on Water Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- Java线程池的内部实现
一.线程池介绍 线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池可以对线程进行统一的分配.调优和监控,并有以下好处: (1)降低资源消耗. (2)提高响应速 ...
- 设计模式之状态模式(State)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- GDI+ ColorMatrix的完全揭秘
无论是用何种语言,只要使用过Windows的GDI+的人对ColorMatrix都不陌生,我的BLOG文章中也多次提到过,并在<GDI+ for VCL基础 -- 颜色调整矩阵ColorMatr ...