EMAScript6

EMAScript6常识

专门对ES6知识的小总结

基础方面

  1. 模板字符串${}(为js提供简单的字符串插值)
  2. 箭头函数
  3. For-of(用来遍历实现迭代器接口的数据)
  4. 获取剩余参数(arr…)拓展运算符代替了arguments对象
  5. 定义默认参数语法(key=value)
  6. 提供原生的Promise对象
  7. 增加let关键字定义块作用域的变量
  8. 增加const定义常量
  9. 增加了Symbol数据类型
  10. ES6规定var和function关键字声明全局变量,属于全局对象的属性。let关键字、const关键字、class关键字声明的全局变量,不属于全局对象的属性。
  11. 引入module模块的概念等

ES6新增特性

1.EMAScript6 用let和const关键字声明的变量,,let在js新增了块级作用域,EMAScript5没有块级作用域,let和const不可前置,也不能重复定义。const用于定义常量,而且该常量值无法被修改,而let的值是可以修改的;
2.EMAScript6支持解构语法,比如数组结构(var[a,b,c]=[0,1,2]);
3.EMAScript6中不再使用EMAScript5那样用原型继承,而是用class关键字定义类,用extends实现继承;
4.EMAScript6中的函数定义不再用function,而是直接用箭头函数定义函数(“(形参)=>{函数块}”);
5.EMAScript6中可以为形参设置默认参数,如(function 函数名A(x,y=“默认参数”){函数块});

Promise 的特性

EMAScript6提供的Promise原生对象,用来处理异步请求。

  1. 对象的状态不受外界影响,Promise对象代表一个异步操作,有三种状态:Pending(进行时)、Resolved(成功请求完成)、Rejected(请求失败)。
  2. 一旦状态改变,就不再改变,任何时候都可以得到两种状态(Resolved、Rejected)返回的结果(Fulfilled和Rejected);

Promise三大方法

  1. Promise.then()方法接收一个promise成功获取到的数据;
  2. Promise.catch()方法接收一个promise失败信息;
  3. Promise.all() 方法接收一个 promise 的 iterable 类型(注:Array,Map,Set 都属于 ES6 的 iterable 类型)的输入,并且只返回一个Promise实例, 那个输入的所有 promise 的 resolve 回调的结果是一个数组。这个Promise的 resolve 回调执行是在所有输入的 promise 的 resolve 回调都结束,或者输入的 iterable 里没有 promise 了的时候。它的 reject 回调执行是,只要任何一个输入的 promise 的 reject 回调执行或者输入不合法的 promise 就会立即抛出错误,并且 reject 的是第一个抛出的错误信息。

super是什么

this的定义时this这个关键字会被替换成一个引用,而super则是super(…)会被替换成一个调用,除了可以在constructor里被直接调用super外,还可以使用super.xxx()来调用父类的某个原型方法,这是一种限定语法。

箭头函数

箭头函数的作用域等于定义时的作用域,一般指向父辈,若父辈无this指向的对象,则往上指,直到widow。通过bind设置的this绑定是无效的。例如:

(function(){
	console.log([
		(()=>{this.x).bind({x:"inner})(),
		(()=>{this.x})
			})
		])	
	}).call({x:"outer})

输出的结果为[‘outer’,‘outer’]

拓展运算符

拓展运算符是一种比较特殊的拷贝,只能对第一层数据,对于对象也拷贝一层,拷贝出来的为深拷贝,数据互不干扰。数据是套娃形式,就是浅拷贝。

//深拷贝
let arr = [1,2,3];
let arr1 = [..arr];
arr1[0]=5;
//浅拷贝
let arr = [1,[2,3]]
let arr1 = [...arr]
arr1[1][0] = 5

for… in 循环的缺点是什么?

缺点:

  • 数组的键名是数字,但for…in循环以字符串为键名;
  • 循环遍历不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。
  • 某些情况下,for…in 循环回以任意顺序遍历键名
  • 总而言之,它只为对象遍历而生
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值