ES8之async函数

什么是async函数async 函数是什么?一句话,它就是 Generator 函数的语法糖。基本用法async函数返回一个 Promise对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。async函数内部return语句返回的值,会成为then方法回调函数的参数。async function getStock

- 阅读全文 -

ES6之用模块封装代码

什么是模块?模块( Modules )是使用不同方式加载的 JS文件(与JS原先的脚本加载方式相对)。这种不同模式很有必要,因为它与脚本( script )有大大不同的语义:模块代码自动运行在严格模式下,并且没有任何办法跳出严格模式;在模块的顶级作用域创建的变量,不会被自动添加到共享的全局作用域,它们只会在模块顶级作用域的内部存在;模块顶级作用域的 this 值为 undefined ;模块不允许

- 阅读全文 -

ES6之Proxy代理

什么是Proxy代理ES6 让开发者能进一步接近 JS 引擎的能力,这些能力原先只存在于内置对象上。语言通过代理( proxy )暴露了在对象上的内部工作,代理是一种封装,能够拦截并改变 JS 引擎的底层操作。人话是:把代理看做是设计模式代理模式中的一种,有一个代理对象来代理本体,而ES6的Proxy牛逼的一点是可以把本体没法改变的内部属性改了代理与反射是什么?通过调用 new Proxy() ,

- 阅读全文 -

ES6之Promise

Promise 基础Promise 是为异步操作的结果所准备的占位符。是解决异步编程的一种方法,是规避回调地狱(callbacK hell)的一种解决方案Promise 的生命周期创建时是一个未决状态,白话文就是还没有决定结果已完成( fulfilled ): Promise 的异步操作已成功结束;已拒绝( rejected ): Promise 的异步操作未成功结束,可能是一个错误,或由其他原因

- 阅读全文 -

ES6之增强的数组功能

Array.of()解决创建数组时的怪异行为, Array.of() 方法总会创建一个包含所有传入参数的数组,而不管参数的数量与类型。下Array.from()将可迭代对象或者类数组对象作为第一个参数传入,Array.from()就能返回一个数组。也就意味着将任意包含 Symbol.iterator属性的对象转换为数组。如果你想实行进一步的数组转换,你可以向Array.from()方法传递一个映射

- 阅读全文 -

ES6之JS的类

基本的类声明类声明以 class 关键字开始,其后是类的名称;剩余部分的语法看起来就像对象字面量中的方法简写,并且在方法之间不需要使用逗号。class PersonClass { // 等价于 PersonType 构造器 constructor(name) { this.name = name; } // 等价于 PersonType.protot

- 阅读全文 -

ES6之迭代器

什么是迭代器?迭代器是被设计专用于迭代的对象,带有特定接口。所有的迭代器对象都拥有 next() 方法,会返回一个结果对象。该结果对象有两个属性:对应下一个值的 value ,以及一个布尔类型的 done ,其值为 true 时表示没有更多值可供使用。迭代器持有一个指向集合位置的内部指针,每当调用了 next() 方法,迭代器就会返回相应的下一个值。若你在最后一个值返回后再调用 next() ,所

- 阅读全文 -

ES6之Set与Map

什么是Set和Map?Set 是不包含重复值的列表。你一般不会像对待数组那样来访问 Set 中的某个项;相反更常见的是,只在 Set 中检查某个值是否存在。Map 则是键与相对应的值的集合。因此,Map中的每个项都存储了两块数据,通过指定所需读取的键即可检索对应的值。 Map 常被用作缓存,存储数据以便此后快速检索。创建 Set 并添加项目Set 使用 new Set() 来创建,而调用 add(

- 阅读全文 -

ES6之符号与符号属性

引在 JS 已有的基本类型(字符串、数值、布尔类型、 null 与 undefined )之外, ES6 引入了一种新的基本类型:符号(Symbol)。符号起初被设计用于创建对象私有成员,而这也是 JS 开发者期待已久的特性。在符号诞生之前,将字符串作为属性名称导致属性可以被轻易访问,无论命名规则如何。而“私有名称”意味着开发者可以创建非字符串类型的属性名称,由此可以防止使用常规手段来探查这些名称

- 阅读全文 -

ES6之解构

对象解构let node = { type: "Identifier", name: "foo" }; let { type, name } = node; console.log(type); // "Identifier" console.log(name); // "foo" 解构赋值let no

- 阅读全文 -