概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、Python 的import,甚至就连 CSS 都有@import,但是 JavaScript 任何这方面的支 ...
分类:
其他好文 时间:
2017-03-15 12:14:16
阅读次数:
307
异步编程对 JavaScript 语言太重要。Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍 Generator 函数如何完成异步操作。 传统方法 ES6 诞生以前,异步编程的方法,大概有下面四种。 回调函数 事件监听 发布/订阅 Prom ...
分类:
其他好文 时间:
2017-03-15 12:13:56
阅读次数:
205
Set 基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。 上面代码通过add方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值。 Set 函数可以接受一个数组(或类似数组的对 ...
分类:
其他好文 时间:
2017-03-15 12:12:16
阅读次数:
243
概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和 ...
分类:
其他好文 时间:
2017-03-15 12:07:13
阅读次数:
277
浏览器加载 传统方法 在 HTML 网页中,浏览器通过<script>标签加载 JavaScript 脚本。 上面代码中,由于浏览器脚本的默认语言是 JavaScript,因此type="application/javascript"可以省略。 默认情况下,浏览器是同步加载 JavaScript 脚 ...
分类:
其他好文 时间:
2017-03-15 12:02:31
阅读次数:
887
Class基本语法 概述 JavaScript语言的传统方法是通过构造函数,定义并生成新对象。下面是一个例子。 上面这种写法跟传统的面向对象语言(比如C++和Java)差异很大,很容易让新学习这门语言的程序员感到困惑。 ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板 ...
分类:
其他好文 时间:
2017-03-15 11:57:17
阅读次数:
272
概述 ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是ES6引入Symbol的 ...
分类:
其他好文 时间:
2017-03-15 11:55:10
阅读次数:
252
Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield语句,定义不同的内部状态(yield在英语里的意思就是“产出”)。 上面代码定义了一个Generator函数helloWorldGenerator,它内部有两个y ...
分类:
其他好文 时间:
2017-03-15 11:44:11
阅读次数:
234
Iterator(遍历器)的概念 JavaScript原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6又添加了Map和Set。这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象。这样就需要一种统一的接口机 ...
分类:
其他好文 时间:
2017-03-15 11:36:41
阅读次数:
264
Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。 Array.of() Array.of方法用于将一组值,转换为数组。 Array.of方 ...
分类:
编程语言 时间:
2017-03-14 18:56:54
阅读次数:
168