JavaScript全讲-必知的特性

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

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

1. 函数式编程

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

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

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

2. 闭包

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

来看闭包的实例代码:

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

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

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

3. 回调函数

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

4.匿名自运行函数

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

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

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

wx_fmt=png" 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新年快乐!

时间: 2024-12-26 09:21:57

JavaScript全讲-必知的特性的相关文章

JavaScript全讲-架构原则解析

因为近期一直在忙,非常久没有更新,见谅. 上篇我们讲完JavaScript函数式编程的特性,今天我们就来聊聊JavaScript中的架构. 提到JavaScript架构.非常多人会认为不可思议,由于架构多是针对类似Java这样的强语言,而JavaScript一直被看成是弱语言,它有设计模式,能够用来构建架构吗? 答案无疑是肯定的! 设计模式本身是一种非常重量级的东西.当JavaScript被当做辅助使用时.谈架构反而会添加复杂度! 所以这么多年.大家并没有看到JavaScript关于设计模式.架

JavaScript基础知识必知!!!

>>>js基础知识 一.js作用 1.表单验证,减轻服务端的压力: 2.添加页面动画效果 3.动态更改页面内容 ※4.Ajax网络请求 二.基本结构 <script type="text/javascript"> alert("hahaha"); </script> 三.使用JS的三种方式 1.直接在HTML标签中,使用事件属性,调用JS代码: <button onclick="alert('点我!');&q

JavaScript开发人员必知的10个关键习惯

还在一味没有目的的编写JavaScript代码吗?那么你就OUT了!让我们一起来看看小编为大家搜罗的JavaScript开发人员应该具备的十大关键习惯吧! 随着新技术的不断发展,JavaScript已经不再仅仅只是一个网络语言.现在,我们能够看到很多使用JavaScript来构建基于本地浏览器的Web应用程序的手机,同时也有非常多的灵活的Web应用程序,如Trello.基于JavaScript打造的应用程序在世界上已经非常流行了. 目前,JavaScript仍然是一门比较容易使用和处理的编程语言

15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码)

15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码) 前言 设计模式是一个程序员进阶高级的必备技巧,也是评判一个工程师工作经验和能力的试金石.设计模式是程序员多年工作经验的凝练和总结,能更大限度的优化代码以及对已有代码的合理重构.作为一名合格的前端工程师,学习设计模式是对自己工作经验的另一种方式的总结和反思,也是开发高质量,高可维护性,可扩展性代码的重要手段. 我们所熟知的金典的几大框架,比如jquery, react, vue内部也大量应用了设计模式, 比如观察

Visual Studio (VS IDE) 你必须知道的功能和技巧 - 【.Net必知系列】

前言 本文主要阐述一些Visual Studio开发下需要知道的少部分且比较实用的功能,也是很多人忽略的部分.一些不常用而且冷门的功能不在本文范围,当然本文的尾巴[.Net必知系列]纯属意淫,如有雷同,基情四射.. 目录 WEB项目版本发布时 Web.config 中 Web.Release.config 和 Web.Debug.config 的使用. 项目属性下[生成事件]使用. 快速分析未知架构和类调用结构的方式(VS2010/2012). 一:Web.Release.config 和 We

图解 &amp; 深入浅出JavaWeb:事务必会必知

图解 & 深入浅出JavaWeb:事务必会必知 转载自http://www.bysocket.com/ 事务,大家所熟悉的事务(Transaction),基本上会就往Spring事务靠.其实Spring事务管理基于底层数据库本身的事务处理机制.数据库事务的基础,是掌握Spring事务管理的基础.这篇总结下数据库事务. 一.数据库事务 它的思想:we are 伐木累.就是多个SQL语句(一个团队),要么所有执行success,不然就fail. 它最终的目标:数据不会被破坏.即事务操作成功,数据的结

移动前端开发人员必知必会:移动设备概述

因为工作岗位的变换带来工作内容的变动,对于移动网站的前端开发已经疏远了好几个月,在这好几个月中有很多新的东西出现,自己所掌握的一些东西也已经陈旧,所以选择了这本书<HTML5触摸界面设计与开发>来系统地学习和整理一下关于移动网站前端开发的知识体系. 之所以选择这本书,一是因为这本书比较新,2014年04月发的第一版.其二是因为作者Stephen Woods,这是Flickr团队的资深前端,Yahoo主页的Javascript技术平台正是出自此人之手. 接下来的时间里会陆续上传关于这本书学习的一

[ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaign=socialShare 上次我写<前端工程师必知必会>已经是三年前了,那是我写过最火的文章了.三年了,我仍然会在Twitter上收到关于这篇文章的消息. 从2012年到现在,一篇文章都没发过让我觉得有点羞羞哒.三年是一段很长的时间,很多东西都发生了改变.2012年,我鼓励同学们去学习浏览器开发

移动前端开发者必知必会:移动设备概述

由于工作岗位的变换带来工作内容的变动,对于移动站点的前端开发已经疏远了好几个月,在这好几个月中有非常多新的东西出现,自己所掌握的一些东西也已经陈旧,所以选择了这本书<HTML5触摸界面设计与开发>来系统地学习和整理一下关于移动站点前端开发的知识体系. 之所以选择这本书,一是由于这本书比較新,2014年04月发的第一版.其二是由于作者Stephen Woods,这是Flickr团队的资深前端,Yahoo主页的Javascript技术平台正是出自此人之手. 接下来的时间里会陆续上传关于这本书学习的