ES6 用Promise对象实现的 Ajax 操作
摘要:下面是一个用Promise对象实现的 Ajax 操作的例子。 上面代码中,getJSON是对 XMLHttpRequest 对象的封装,用于发出一个针对 JSON 数据的 HTTP 请求,并且返回一个Promise对象。需要注意的是,在getJSON内部,resolve函数和reject函数调用时,
阅读全文
ES6 promise学习笔记 -- 基本用法
摘要:ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。 下面代码创造了一个Promise实例。 Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。 resolve函数
阅读全文
async/await学习笔记
摘要:async/await 的目的是简化使用 promises 的写法。 让我们来看看下面的例子: 同样,抛出异常的函数等于返回已失败的 promises: 关键字 await 只能使用在 async 的函数中,并允许你同步等待一个 Promise。如果我们在 async 函数之外使用 promise,
阅读全文
ES6 Module的语法
摘要:下面比较一下默认输出和正常输出。 上面代码的两组写法,第一组是使用export default时,对应的import语句不需要使用大括号;第二组是不使用export default时,对应的import语句需要使用大括号。 export default命令用于指定模块的默认输出。显然,一个模块只能有
阅读全文
ES6 let和const 的相同点与区别
摘要:相同点: 1. 一旦声明 值不能再改变,即不能重复声明. 2.不存在变量提升. 3.都存在暂时性死区. 不同点: 1.const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。
阅读全文
ES6 super关键字
摘要:我们知道,this关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super,指向当前对象的原型对象。 上面代码中,对象obj的find方法之中,通过super.foo引用了原型对象proto的foo属性。 注意,super关键字表示原型对象时,只能用在对象的方法之中,用在其他地
阅读全文
ES6 对象的扩展 Object.assign()
摘要:Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。 注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。 Obj
阅读全文
ES6 对象的扩展 Object.is()
摘要:ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符( )。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。 ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is就是部署这个算法的新方法
阅读全文
ES6 函数的扩展-rest参数
摘要:ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 上面代码的add函数是一个求和函数,利用 rest 参数,可以向该函数传入任意数目的参数。 下面是一个 rest
阅读全文
ES6 class的继承-学习笔记
摘要:1、简介 Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。 子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用supe
阅读全文
ES6 声明变量的6种方法
摘要:ES5 只有两种声明变量的方法:var命令和function命令。 ES6除了添加let和const命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。所以,ES6 一共有 6种 声明变量的方法。 顶层对象,在浏览器环境指的是window对象,在Node指的是globa
阅读全文
Proxy --支持的拦截操作篇
摘要:下面是 Proxy 支持的拦截操作一览。 对于可以设置、但没有设置拦截的操作,则直接落在目标对象上,按照原先的方式产生结果。 (1)get(target, propKey, receiver) 拦截对象属性的读取,比如proxy.foo和proxy['foo']。 最后一个参数receiver是一个
阅读全文
Proxy --概述篇
摘要:概述: Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤
阅读全文
ES6 箭头函数--特性
摘要:如果箭头表达式仅仅就是简化了函数的命名,我们为什么要改变原来的习惯而去使用它呢?所以我们需要了解一下箭头函数的特性。 箭头函数内部没有constructor方法,也没有prototype,所以不支持new操作。但是它对this的处理与一般的普通函数不一样。箭头函数的 this 始终指向函数定义时的
阅读全文
async 函数--学习笔记一
摘要:含义: ES2017 标准引入了 async 函数,使得异步操作变得更加方便。async 函数是什么?一句话,它就是 Generator 函数的语法糖。 前文有一个 Generator 函数,依次读取两个文件。 写成async函数,就是下面这样。 一比较就会发现,async函数就是将 Generat
阅读全文
Symbol -- JavaScript 语言的第七种数据类型
摘要:ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol
阅读全文
Set和Map数据结构
摘要:1、Set ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。 2、Map JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用
阅读全文
ES6 Generator 学习笔记一
摘要:Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。 Generator 函数有多种理解角度。从语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。 执行 Generator 函数会返回一个遍历器对象,也就是说,Generat
阅读全文