随笔分类 -  ECMAscript

摘要:上一章介绍了模块的语法,本章介绍如何在浏览器和 Node 之中加载 ES6 模块,以及实际开发中经常遇到的一些问题(比如循环加载)。 浏览器加载 传统方法 HTML 网页中,浏览器通过<script>标签加载 JavaScript 脚本。 上面代码中,由于浏览器脚本的默认语言是 JavaScript 阅读全文
posted @ 2019-01-03 18:05 hahazexia 阅读(693) 评论(0) 推荐(0) 编辑
摘要:概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、Python 的import,甚至就连 CSS 都有@import,但是 JavaScript 任何这方面的支 阅读全文
posted @ 2019-01-02 17:21 hahazexia 阅读(320) 评论(0) 推荐(0) 编辑
摘要:类的修饰 许多面向对象的语言都有修饰器(Decorator)函数,用来修改类的行为。目前,有一个提案将这项功能,引入了 ECMAScript。 上面代码中,@testable就是一个修饰器。它修改了MyTestableClass这个类的行为,为它加上了静态属性isTestable。testable函 阅读全文
posted @ 2018-12-10 18:17 hahazexia 阅读(1371) 评论(0) 推荐(0) 编辑
摘要:简介 Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。 上面代码定义了一个ColorPoint类,该类通过extends关键字,继承了Point类的所有属性和方法。但是由于没有部署任何代码,所以这两个类完全一样,等于复制了一个Point类。 阅读全文
posted @ 2018-11-06 22:34 hahazexia 阅读(266) 评论(0) 推荐(0) 编辑
摘要:介绍 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。 上面这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。 ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过cl 阅读全文
posted @ 2018-11-05 16:31 hahazexia 阅读(280) 评论(0) 推荐(0) 编辑
摘要:含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是什么?一句话,它就是 Generator 函数的语法糖。 前文有一个 Generator 函数,依次读取两个文件。 写成async函数,就是下面这样。 一比较就会发现,async函数就是将 Generat 阅读全文
posted @ 2018-10-28 21:28 hahazexia 阅读(855) 评论(0) 推荐(0) 编辑
摘要:ES6 诞生以前,异步编程的方法,大概有下面四种。 回调函数事件监听发布/订阅Promise 对象 Generator 函数将 JavaScript 异步编程带入了一个全新的阶段。 基本概念 异步 所谓"异步",简单说就是一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而 阅读全文
posted @ 2018-10-23 10:28 hahazexia 阅读(214) 评论(0) 推荐(0) 编辑
摘要:简介 基本概念 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍 Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异步应用》一章。 Generator 函数有多种理解角度。语法上,首先可以把它理解成,G 阅读全文
posted @ 2018-09-20 19:50 hahazexia 阅读(301) 评论(0) 推荐(0) 编辑
摘要:Iterator(遍历器)的概念 JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set。这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象。这样就需要一种统一的接 阅读全文
posted @ 2018-09-16 22:23 hahazexia 阅读(212) 评论(0) 推荐(0) 编辑
摘要:Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个 阅读全文
posted @ 2018-09-14 20:54 hahazexia 阅读(122) 评论(0) 推荐(0) 编辑
摘要:概述 Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设计目的有这样几个。 (1) 将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。现阶段,某些方法同时在Object 阅读全文
posted @ 2018-09-12 23:08 hahazexia 阅读(165) 评论(0) 推荐(0) 编辑
摘要:概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和 阅读全文
posted @ 2018-08-11 23:27 hahazexia 阅读(348) 评论(0) 推荐(0) 编辑
摘要:Set 基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。 上面代码通过add方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值。 Set 函数可以接受一个数组(或者具有 it 阅读全文
posted @ 2018-07-23 22:54 hahazexia 阅读(165) 评论(0) 推荐(0) 编辑
摘要:概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Sym 阅读全文
posted @ 2018-07-04 15:51 hahazexia 阅读(219) 评论(0) 推荐(0) 编辑
摘要:属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同于 const baz = {foo: foo}; 上面代码表明,ES6 允许在 阅读全文
posted @ 2018-07-03 16:55 hahazexia 阅读(681) 评论(0) 推荐(0) 编辑
摘要:扩展运算符 含义 扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。 console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [.. 阅读全文
posted @ 2018-01-23 17:40 hahazexia 阅读(167) 评论(0) 推荐(0) 编辑
摘要:函数参数的默认值 基本用法 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World。这种写法的缺点在于,如果参数y赋值了,但是对应的布尔值为false,则该赋值不起作用。就像上面代码的最后一行,参数y等于空字符 阅读全文
posted @ 2018-01-08 23:45 hahazexia 阅读(181) 评论(0) 推荐(0) 编辑
摘要:二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)(二进制binary)和0o(或0O)(八进制octonary)表示。 从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6 进一步明确,要使用前缀0o表示。 如果要将0b和0o前缀的字符串 阅读全文
posted @ 2018-01-03 15:08 hahazexia 阅读(424) 评论(0) 推荐(0) 编辑
摘要:RegExp构造函数 在 ES5 中,RegExp构造函数的参数有两种情况。 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。 第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。 RegExp构造函数的参数是一个正则表达式的时候,ES5 不允许此时 阅读全文
posted @ 2017-12-21 15:16 hahazexia 阅读(1589) 评论(0) 推荐(0) 编辑
摘要:字符的unicode表示法 JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点。 这种表示法只限于码点在\u0000~\uFFFF之间的字符。超出这个范围的字符,必须用两个双字节的形式表示。 如果直接在\u后面跟上超过0xFFFF的数值(比如\u 阅读全文
posted @ 2017-11-08 11:57 hahazexia 阅读(603) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示