ES6
2018-07-17 本文已影响4人
奋斗的小小小兔子
- 常量 ----只读
// ES5的写法
Object.defineProperty(window, "PI2", {
value: 3.1415926,
writable: false,
})
// ES6的写法
const PI = 3.1415926;
- 作用域
{}
- 箭头函数
// ES5
var evens = [1, 2, 3, 4, 5];
var odds = evens.map(function(v) {
return v+1;
})
console.log(evens, odds);
// ES6
let evens = [1, 2, 3, 4, 5];
let odds = evens.map(v => v+1);
console.log(evens, odds);
// ES6中小括号中传入的参数,如果只有一个则可以省略括号。
// 花括号中的表达式直接作为返回值时,可以省略花括号
() => {
}
- 默认参数
// ES5
let f = function (x, y, z) {
x = x || 1;
y = y || 2;
z = z || 3;
return x+y+z;
}
console.log(f(), f(3,4));
//ES6
let f = (x = 1, y = 2, z = 3) => x+y+z;
console.log(f(), f(3,4));
// 可变参数累计和 ES5
function f() {
var a = Array.prototype.slice.call(arguments);
return a.reduce((i, j) => i+j);
}
console.log(f(1,3));
// 可变参数求累计和ES6
function f(...a) {
return a.reduce((i, j) => i+j);
}
console.log(f(1,3));
// ES5 合并数组
var params = [1, '4', '3333'];
var other = [1, '4'].concat(params);
console.log(other); // [1, "4", 1, "4", "3333"]
// ES6 合并数组
var params = [1, '4', '3333'];
var other = [1, '4', ...params];
console.log(other); // [1, "4", 1, "4", "3333"]
// ES6利用扩展运算符对象
var params = {
a: 1,
b: '4',
c: '3333'
};
var other = {
a: 3,
b: '4',
...params
};
console.log(other); //后面的值覆盖了前面{a: 1, b: "4", c: "3333"}
- 对象代理
let Person = {
name: 'es6',
sex: 'male',
age: 15
};
let person = new Proxy(Person, {
get(target, key) {
return target[key];
}
set(target, key, value) {
if(key!=='sex') {
target[key]=value;
}
}
})
console.table({
name: person.name,
sex: person.sex,
age: person.age,
})
try {
person.set = 'female';
} catch(e) {
console.log(e);
} finally {
}