随笔分类 -  ECMAScript 6

摘要:行为重定义 Proxy 在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截 因此提供了一种机制,可以对外界的访问进行过滤和改写 Proxy 这个词的原意是代理,用在这里表示由它来"代理"某些操作,可以译为 "代理器" var obj = new Proxy({}, { get: 阅读全文
posted @ 2018-12-18 21:30 耶梦加德 阅读(159) 评论(0) 推荐(0) 编辑
摘要:1. 模块加载方案 commonJS 背景: 历史上,JavaScript 一直没有模块(module)体系, 无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。 其他语言都有这项功能: Ruby 的require Python 的import 甚至就连 CSS 都有@import 但 阅读全文
posted @ 2018-12-17 20:46 耶梦加德 阅读(981) 评论(0) 推荐(0) 编辑
摘要:Genertor 是一个普通函数,但是有两个特征: function 关键字 与 函数名之间有一个星号; 函数体内部使用 yield 表达式,定义不同的内部状态(yield 在英语里的意思就是“产出”) 调用 Generator 函数后,该函数并不执行, 返回的也不是函数运行结果,而是一个指向内部状 阅读全文
posted @ 2018-12-17 15:15 耶梦加德 阅读(141) 评论(0) 推荐(0) 编辑
摘要:唯一容器 Set ES6 提供了新的数据结构 Set Set 结构没有键名,只有键值(或者说 键名 和 键值 是同一个值) 它类似于数组,但是成员的值都是唯一的,没有重复的值 Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”, NaN 等于自身 它类 阅读全文
posted @ 2018-12-17 14:23 耶梦加德 阅读(167) 评论(0) 推荐(0) 编辑
摘要:类 class ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。 通过 class 关键字,可以定义类 class 新的 class 写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已 类的所有方法都定义在类的 prototype 属性上面,const 阅读全文
posted @ 2018-12-17 10:49 耶梦加德 阅读(209) 评论(0) 推荐(0) 编辑
摘要:对象 1. ES6 允许直接写入变量和函数,作为对象的属性和方法 const foo = 'bar'; /*****************属性的优化********************/ const baz = {foo: foo}; // 优化为 const baz = {foo}; /** 阅读全文
posted @ 2018-12-16 22:54 耶梦加德 阅读(194) 评论(0) 推荐(0) 编辑
摘要:1. 扩展运算符 内部调用的是数据结构的 Iterator 接口, 因此只要具有 Iterator 接口的对象,都可以使用扩展运算符 ... 如 map,,,, [...arr] 扩展运算符(spread)是三个点(...) 将一个数组转为用逗号分隔的参数序列 console.log(...[1, 阅读全文
posted @ 2018-12-16 16:31 耶梦加德 阅读(267) 评论(0) 推荐(0) 编辑
摘要:1. 二进制 和 八进制 新的表示法 前缀 0b(或0B) 表示 二进制 前缀 0o(或 0O )表示 八进制 console.log(0b111110111 503); // true console.log(0o767 503); // true 如果要将 0b 和 0o 前缀的字符串数值 转为 阅读全文
posted @ 2018-12-16 12:47 耶梦加德 阅读(203) 评论(0) 推荐(0) 编辑
摘要:async 函数 const promise = new Promise((resolve, reject)=>{ setTimeout(function(){ console.log("Done1"+"First"); resolve("Done1"+"First"); }, 1000); }); 阅读全文
posted @ 2018-12-15 17:15 耶梦加德 阅读(161) 评论(0) 推荐(0) 编辑
摘要:在 ES5 中 RegExp 构造函数的参数有两种情况 RegExp(字符串, 正则表达式的修饰符) RegExp(正则表达式); var regex = new RegExp('xyz', 'i'); // 等价于 var regex = new RegExp(/xyz/i); // 不能再有 第 阅读全文
posted @ 2018-12-15 17:14 耶梦加德 阅读(310) 评论(0) 推荐(0) 编辑
摘要:Promise 对象 异步编程 方案,已同步的方式表达异步的代码,解决回调地狱的问题 比传统的解决方案——回调函数和事件——更合理和更强大 是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。 Promise 阅读全文
posted @ 2018-12-15 16:34 耶梦加德 阅读(171) 评论(0) 推荐(0) 编辑
摘要:iterator 接口 只要部署了 iterator 接口 symbol(symbol.iterator), 则可以进行 for...of 遍历 阅读全文
posted @ 2018-12-15 12:05 耶梦加德 阅读(485) 评论(0) 推荐(0) 编辑
摘要:Symbol 数据类型 let s = Symbol(); typeof s; // "symbol" 是 ES6 继 Number,String,Boolean,Undefined,Null 之后引入的新数据类型 对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbo 阅读全文
posted @ 2018-12-15 11:53 耶梦加德 阅读(420) 评论(0) 推荐(0) 编辑
摘要:ES6规定只要函数参数使用了默认值、解构赋值、或者扩展运算符, 那么函数内部就不能显式设定为严格模式,否则会报错 1. 参数的默认值 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面 函数不能有同名参数 参数初始化会形成一个单独作用域。实际执行的是 let a = 1; 参数默认值是惰性 阅读全文
posted @ 2018-12-15 11:48 耶梦加德 阅读(189) 评论(0) 推荐(0) 编辑
摘要:ES6 字符串扩展 ES6 加强了对 Unicode 的支持,并且扩展了字符串对象 字符 的 Unicode 表示法 允许采用 \uxxxx 形式表示一个字符, 其中 xxxx 表示字符的 Unicode 码点 这种表示法只限于码点在 \u0000 ~ \uFFFF 之间的字符。 "\u0061" 阅读全文
posted @ 2018-12-14 22:49 耶梦加德 阅读(243) 评论(0) 推荐(0) 编辑
摘要:解构赋值 从数组中提取值,按照对应位置,对变量赋值 只要等号右边的值不是对象或数组,就先将其转为对象。 由于 undefined 和 null 无法转为对象,所以对它们进行解构赋值,都会报错 let [a, b, c] = [1, 2, 3]; 只要某种数据结构具有 Iterator 接口,都可以采 阅读全文
posted @ 2018-12-14 22:02 耶梦加德 阅读(341) 评论(0) 推荐(0) 编辑
摘要:ES6 为了保持兼容性,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性; 另一方面规定,let 命令、const 命令、class 命令声明的全局变量,不属于 window 的属性。 也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩 浏览器顶层对象指的是 win 阅读全文
posted @ 2018-12-13 17:06 耶梦加德 阅读(211) 评论(0) 推荐(0) 编辑
摘要:ECMAScript 6 ECMA 组织 前身是 欧洲计算机制造商协会 指定和发布脚本语言规范,标准在每年的 6 月份正式发布一次,作为当年的正式版本 这样一来,就不需要以前的版本号了,只要用年份标记就可以了. ES6 既是一个历史名词,也是一个泛指“下一代 JavaScript 语言”, 含义是 阅读全文
posted @ 2018-12-13 16:25 耶梦加德 阅读(233) 评论(0) 推荐(0) 编辑

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