# ES6
ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";
# class
类本质是特殊的 function,用 class 定义,不存在变量提升。
// 类声明方式
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
// 表达式声明方式
// unnamed
var Rectangle = class {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
// named
var Rectangle = class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
# static methods
- 不实例化时,可以调用
- 实例化时,不能被调用
- 被调用内部无
this
定义
# 数组扩展
Object.assign(target, resource, resource)
剩余参数
function(a, b, ...args) {
var normalArray = args;
}
function f(...[a, b, c]) {
return a + b + c;
}
# 解构赋值
通过解构赋值, 可以将属性/值从对象/数组中取出,赋值给其他变量。
// 解构数组
var a, b;
[a=5, b=7] = [1];
console.log(a); // 1
console.log(b); // 7
// 解构对象
var a, b;
({a, b} = {a: 1, b: 2});
TIP
赋值语句周围的圆括号 ( ... ) 在使用对象字面量无声明解构赋值时是必须的。
{a, b} = {a: 1, b: 2} 不是有效的独立语法,因为左边的 {a, b} 被认为是一个块而不是对象字面量。
然而,({a, b} = {a: 1, b: 2}) 是有效的,正如 var {a, b} = {a: 1, b: 2}
你的 ( ... ) 表达式之前需要有一个分号,否则它可能会被当成上一行中的函数执行。
# 学习资料
form →