… 运算符, 可以把数组展开
常用于把数组展开成函数参数, 代替 函数的apply 方法的场景
… 运算符, 可以把对象类型展开
合并对象
function 函数(a, …args)
let [a,c] = [11, 22, 33]
let {name, age} = {name: 11, age:22}
别名写法
let {name: gname, age} = {name: 11, age: 22}
``
配合 ${} 关键词, 可以在 模板字符串中书写JS代码
场景
匿名函数的简化写法
()=>{}
语法糖1
语法糖2
方法体只有一行代码时, 简化 {return }
()=> {return xxx}
注意
this
不能做构造函数使用
没有 bind, call, apply 这些方法
Object.keys
Object.setPrototypeOf
Object.create
一种实现异步操作的方式
旧方式: 回调函数
Promise利用链式语法来防止回调地狱的发生
基础语法
reject({})
}).then(res=>{}).catch(err=>{})
- resolve会触发 then函数, 其参数会传递给 res
- reject 会触发 catch 函数, 其参数会传递给 err
- resolve 和 reject 二选一, 只能触发其中一个, 触发之后另一个无法触发
三种状态
pending
fulfilled
rejected
面向对象三大特征
封装
继承
多态
JS提供了独特的 构造函数方式语法
Point.prototype.toString = function () {
return ‘(’ + this.x + ', ’ + this.y + ‘)’;
};
var p = new Point(1, 2);
这种语法与传统的面向对象语言, 例如 C++ JAVA PHP Python 等等… 差异非常大, 很容易让这些程序员感觉困惑
ES6提供了更接近传统语言的写法, 本质上是一个语法糖, 让传统程序员更容易学习和接受
class 类名 extends 父类 {
static 静态属性
static 静态方法(){}
constructor(a, b){
this.a = a
this.b = b
}
对象方法(){
super.对象方法()
}
}
- extends是继承的关键词
- 相当于 类.prototype.__proto__ = 父类.prototype
- static
- 静态关键词, 相当于 类.属性名 = 值
- constructor
- 构造方法
- super
- 代表父类的关键词
- this
- 代表当前对象的关键词