
Thinking in JavaScript
文章平均质量分 80
从程序员看不上眼的玩具,变成当今最热门的语言之一,JavaScript的性质和地位发生了天翻地覆的变化。伴随着Web技术的飞速发展,它的潜力被逐渐发现和发挥。JavaScript的函数式编程、基于原型的对象模型等特性,既提供了写出精致代码的可能性,又需要开发者对语言有充分的认识。
starrow
介绍
展开
-
《JavaScript函数式编程思想》——从面向对象到函数式编程
第9章 从面向对象到函数式编程假如本书的写作时间倒退回十年前,书名可能会变成JavaScript面向对象编程思想。自上世纪90年代兴起的面向对象编程思想随Java的繁荣达于顶点,在JavaScript从一门只被用来编写零星的简单的表单验证代码的玩具语言变成日益流行的Web应用不可取代的开发语言的过程中,脚本的作者们也逐渐学习和习惯了被视为软件开发正统的面向对象编程。等到盛极而衰,面向对象编程...原创 2019-02-15 11:01:38 · 3007 阅读 · 0 评论 -
《JavaScript函数式编程思想》——列表
第8章 列表函数式编程与列表处理有很深的渊源。列表是最基础,也是使用最普遍的复合数据类型。作为最早出现的函数式编程语言之一,Lisp【注:它的名称就来源于“列表处理器”(LISt Processor)】用函数参数和递归的方式来处理列表,既展示了列表的灵活性和表现力,又体现了函数式编程的优美和强大,影响了后续的很多编程语言。本章就来探讨JavaScript中的列表和函数式编程。8.1 处...原创 2019-02-14 08:27:24 · 1251 阅读 · 0 评论 -
《JavaScript函数式编程思想》——递归
第7章 递归王二、张三和赵四一日无聊,决定玩击鼓传花讲冷笑话的游戏。王二和张三围成一圈传花,赵四负责击鼓。张三接连讲了几个诸如小菜、狐狸狡猾的笑话。花停在了王二的手中。王二:这个笑话很短。你要保证听完后不生气我就说。张三:你说吧。王二:张三。张三:怎么了?王二:笑话说完了,就两个字。张三欲发怒。王二:欸,你刚才说好了不会生气的。张三只好作罢。新一轮开始,花又停在王二的手中。...原创 2019-02-13 10:53:52 · 1517 阅读 · 0 评论 -
《JavaScript函数式编程思想》——副作用和不变性
第6章 副作用和不变性6.1 副作用6.2 纯函数6.2.1 外部变量6.2.2 实现6.2.3 函数内部的副作用6.2.4 闭包6.3 不变性6.3.1 哲学上的不变性与身份6.3.2 简单类型和复合类型6.3.3 值类型和引用类型6.3.4 可变类型和不可变类型6.3.5 可变数据类型的坏处在详细讨论完不变性的含义和其与其他概念的关系...原创 2019-02-12 11:59:51 · 1448 阅读 · 0 评论 -
《JavaScript函数式编程思想》——部分应用和复合
第5章 部分应用和复合一等值的函数,是函数式编程的基石。部分应用和复合,则是函数式编程的重要特征。采用命令式编程时,每当我们感觉需要抽象出一个新的功能时,就会定义一个函数。在函数式编程中,被同样需要的新函数,往往无需定义,就能像变魔术一样产生,两位魔术师的名字就叫做部分应用和复合。5.1 部分应用5.2 柯里化我们已经体会到部分应用一个函数的好处,那么对部分应用得到的函数,假如...原创 2019-02-11 11:45:44 · 1612 阅读 · 0 评论 -
《JavaScript函数式编程思想》——函数是一等值
第4章 函数是一等值在函数式编程的标准或特点中,“函数是一等值”是最基本和重要的,也是最为人所知的,所有介绍函数式编程的书籍和文章都会优先介绍这一点,以至于“一等值”几乎成为函数的专属头衔,听上去就像“王牌”一类的文学修辞,而实际上却两者皆不是。一等(First-class)是编程语言中值的通用修饰词,只要某个值满足以下三个条件,就能被称为一等值。可以作为参数传递给函数 可以作为函数返...原创 2019-02-02 16:37:35 · 1333 阅读 · 0 评论 -
《JavaScript函数式编程思想》——类型系统
第2章 类型系统为什么在许多编程语言中整数和浮点数是两种类型?结构体、数组、列表、映射……这些类型有什么关系?用户自定义的各种类型与它们又有什么关系?函数也是类型吗?强类型和弱类型意味着什么?它们的区别和类型转换有关吗?静态类型语言中的变量为什么有固定类型而动态类型则没有?多态性就是后期绑定吗?鸭子类型是怎么回事?为什么要采用它?假如您对以上问题感兴趣,阅读完本章时就会有肯定的答案。有了...原创 2019-02-01 10:34:53 · 1073 阅读 · 0 评论 -
《JavaScript函数式编程思想》——名称
第1章 名称一般对函数式编程的介绍都会从一等值和纯函数等概念开始,本书却准备在那之前先花些篇章讨论两个通常未得到足够重视的主题:名称和类型系统。前者包括名称绑定、作用域和闭包等内容,后者包括类型的含义和划分、强类型和弱类型、静态类型和动态类型以及多态性的内容。理解这些概念对编程很有意义,无论使用的是哪种语言,采用的是什么范式。具体到本书的核心,使用JavaScript进行函数式编程,在对以上...原创 2019-01-31 11:58:53 · 1328 阅读 · 0 评论 -
[20, 3, 10].sort()
前段时间看到有人在网上说javascript烂,原因之一是下面这个例子。 [20, 3, 10].sort(); // [10, 20, 3] 这样的结果看上去确实难以理解,说得好听是违反直觉,难听则是错得不可理喻,这门语言怎么会在这么简单的地方犯这么低级的错误。然而,虽然javascript设计上有一些缺陷,在这个行为上却不能背黑锅。一切都是有原因的。 我们知道javascript是一门动原创 2016-08-03 11:00:24 · 1577 阅读 · 0 评论 -
JavaScript单元测试
编写代码时,以单元测试代码伴随正式的功能代码是很好的实践和习惯,不仅可以保证最终代码的质量,对用户负责,也可以让自己对写出的代码更有信心和把握。JavaScript在现代Web开发中占的比重越来越大,早已不是在页面中插入几行代码的时代,自然也应该做单元测试。而且作为一种弱类型的动态语言,不仅无法检查编译时类型错误,高度的灵活性也容易隐藏输入时的失误,单元测试以保证代码能如预期运行就更为必要。另一方面原创 2016-07-15 15:35:34 · 4363 阅读 · 0 评论 -
用JavaScript编写业务逻辑?
Web应用程序刚刚兴起并取代传统客户端应用程序时,技术热点在服务器端开发语言。从ASP、PHP到Java、ASP.NET,无论采用哪种技术,作为一个系统核心的业务逻辑都是用一种运行在服务器端的语言编写的。架构师习惯将一个应用系统分为多层,视图层、业务逻辑层和数据层等,而它们也都是以某种服务器端编程语言,结合html和sql等技术,在服务器上运行。JavaScript作为运行在浏览器中的语言,仅仅是用原创 2016-07-13 16:25:19 · 10193 阅读 · 0 评论 -
纪念userscripts.org
发现一些Firefox的用户脚本不工作和userscripts.org访问不了有挺长一段日子了,心想是哪里出了错也没特意去查。前几天有时间检查脚本,顺便再上久违的userscripts.org看看,却还是不能访问,感觉有些蹊跷,遂在Google上搜索userscripts.org down,还没敲完,提示已经出来了,看来这已是影响普遍的问题,和伟大的防火墙没什么关系。点进链接一看,大吃一惊。原来u...原创 2014-10-10 17:29:40 · 8590 阅读 · 0 评论 -
What is this?
(This is an article I wrote several years ago to explain the this keyword in some programming languages. The title is a pun intended.)Java, C# etc.The this is a keyword in programming languages such a原创 2014-03-07 10:34:30 · 5884 阅读 · 3 评论 -
Java、LotusScript和JavaScript中的自定义事件编程
面向对象的LotusScript(六)之为自定义对象模拟事件和面向对象设计与事件两篇文章都提到事件是编程时对很多场景的抽象和解决模式,核心就是在两个对象之间建立一种“提醒”机制,当某件事发生时,作为发布者的对象提醒称为收听者或预订者的对象,后者执行特定的操作。在汽车火车上,一名乘客甲请讬乘务员或者另一乘客乙到某站丙时提醒自己下车,就可以作为以上事件概念在生活中很好的原型。这里汽车到达丙站就是事件,原创 2014-03-03 11:41:34 · 10047 阅读 · 5 评论 -
JavaScript的strict模式与with关键字
2009年12月,ECMAScript发布了ECMAScript 5,这距离上一个版本的ECMAScript 3标准发布已经整整十年了,其间JavaScript虽然大行于web编程,ECMAScript 4却最终因为利益相关的各大厂商和组织在此语言的复杂性(即是否增加大量特性以扩展ECMAScript的功能)上的分歧而夭折,使得ECMAScript新标准的制订大大落后于编程的实践。ECMAScri原创 2014-02-07 15:06:17 · 3347 阅读 · 0 评论 -
Hacking with JavaScript——在浏览器之内,网页之外,运行JavaScript
引言端口扫描、内存溢出、安全漏洞……这些大概是很多人提到黑客时会想到的。他们用的语言自然也是汇编、C这些贴近底层的高级语言。JavaScript似乎与这一切毫不相关,自诞生起相当长一段时间内,这门在浏览器内执行一些简单的校验和互动的脚本语言,是职业程序员看不上眼的玩具。然而,本文就是要谈谈Hacking with JavaScript——以JavaScript来“黑客”。这之所以能成为一个题目,有原创 2014-01-23 16:14:28 · 8027 阅读 · 9 评论 -
Javascript的新领域——动态图片处理之SVG
近三年前的一篇旧文,虽然在浏览器和相关技术标准方面有过时之处,但总体上对概念的理解、开发的思路和代码样例仍然有参考价值。背景当Javascript被Netscape公司发明出来时,它被用来做一些琐细的事情,比如校验表单、计算日期、提示用户;随着Web的迅速发展,这种轻巧而灵活的语言被委以越来越多的任务,动态地修改页面内容,一致地处理事件,甚至无刷新地和服务器交互。然而,与传统的客户端编程相比,Ja原创 2013-10-17 11:12:50 · 17390 阅读 · 0 评论 -
选择jQuery的n个理由
发展迅速且开放的技术领域的开发者想找一个工具、框架、方案、代码库(不管你称它为什么),烦恼的往往不是找不到,而是选项太多。Web开发人员挑选JavaScript库时的处境正是如此。Prototype、jQuery、dojo、YUI、Ext JS、Montools……让人眼花缭乱。因而在应用某一个脚本库之前,还多了一项选择的工作。很容易构想出一系列选择的标准。比如:功能要全面,基本能原创 2013-10-12 10:12:06 · 5680 阅读 · 1 评论 -
学会jQuery 不用买书
市面上关于jQuery的书很多,但在我看来,为了学jQuery买书,就像买一本《傻瓜相机操作指南》。如果有必要,只会证明jQuery作为一个JavaScript库,写得不够好。而jQuery恰恰是设计良好,容易掌握正是它的优点之一。学会jQuery,一篇文章的篇幅正合适。当然前提是已经掌握JavaScript语言。不看注释先来看几段jQuery代码(片段二和三取自jQuery官方网站首页)原创 2013-07-31 10:55:34 · 20990 阅读 · 17 评论 -
JavaScript的角色巨变和Web技术的发展
曾经JavaScript是职业程序员看不上眼的脚本语言,如今只有高级程序员才能驾驭它。JavaScript性质和地位的天翻地覆,正是Web技术飞速变化的印证。最初职业程序员轻视JavaScript,认为它和C、Java这些真正的开发语言相比只是脚本小毛孩(Script Kids)的玩具。那时候,互联网才刚刚从单纯提供静态信息发展到和用户之间有一些互动。JavaScript做的只是跑龙套的角原创 2013-07-01 15:13:25 · 6580 阅读 · 0 评论