ES6笔记

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

你可能感兴趣的:(ES6笔记)