1. 使用解构赋值减少代码量
// es5
let detail = this.data.detail,
score = this.data.score,
totalScore = this.data.totalScore,
ratio = score / totalScore;
// es6解构赋值
let { detail, score, totalScore } = this.data,
ratio = score / totalScore;
// 还可以使用别名
let { detail, score: score1, totalScore: score2 } = this.data,
ratio = score1 / score2;
// 筛选掉特定的键值
let obj = {a:1, b:2, c:3, d:4};
let {a, ...newObj} = obj;
console.log(newObj); // {b:2, c:3, d:4}
2. 同理,使用展开运算符减少代码量
// es5
obj.a = obj2.a;
obj.b = obj2.b;
obj.c = c;
// es6展开运算符
obj = { ...obj, a: obj2.a, b: obj2.b, c};
// 注意,后面的同名属性会覆盖前面的,但不能用于深拷贝
3. Reflect
附ES5中 Object的一些特性
4. iterator
Array、Map、Set、arguments、nodeList、String等默认部署了 iterator,可以使用 for...of 进行遍历,若想给 Object 类型部署 iterator,可以自定义 iterator 方法,若是伪数组则可以如下:
let iterable = {
0: 0,
1: 1,
length: 2,
[Symbol.iterator]: Array.prototype[Symbol.iterator]
};
for(let value of iterable) {
console.log(value); // 输出 0 1
}
5. for...of循环的优点
for 语法比较繁琐
for...in 无法保证顺序,无法中途使用return或break跳出,key会默认转化为String类型,会遍历原型链的键值
for...of 有着与for...in一样简洁的语法,但没有那些缺点(经过验证,也会遍历原型链的键值)
6. Array新特性
indexOf
every
some
reduce
isArray