一 promise
const promise = new Promise((resolve, reject) => {
console.log(1)
resolve()
console.log(2)
})
promise.then(() => {
console.log(3)
})
console.log(4)
1.两个回调函数
(1).new Promise()里面的回调是同步,立即执行
(2).then和catch里面的回调,是异步的,需要resolve和reject执行了,才会执行
2.resolve和reject
resolve是将pending状态(promise的起始状态)--->resolved状态
reject是将pending状态(promise的起始状态)--->rejected状态
状态转化只能是上面两个,而且一旦转化就不能变了
二 扩展符 ... ---主要用来赋值---就是浅克隆
obj={}
obj1={a:11,b:22,c:3}
obj={...obj1}
obj.a=1
console.log(obj,obj1)
//{a: 1, b: 22, c: 3} {a: 11, b: 22, c: 3}
//注意只能浅克隆
obj={}
obj1={a:{a:1},b:22,c:3}
obj={...obj1}
obj.a.a=222222
console.log(obj,obj1)
//obj:{a: {…}, b: 22, c: 3}
a: {a: 222222}
b: 22
c: 3
//obj1
{a: {…}, b: 22, c: 3}
a: {a: 222222}
b: 22
c: 3
三 class 类 (ps:统一把构造函数叫类)
(一)三个重要的属性 _proto_ constructor prototype
1所有的对象都独有__proto__和constructor属性
2所有的函数都独有prototype属性
(二)_proto_ ---往上指
1.所有类的__proto__都指向父类,直到Object类
//所有类相当于默认继承Object类
//因为A.prototype.__proto__==Object.prototype
class A extends Object{}
class B extends Object{}
console.log(B.__proto__)//A
2.所有prototype.__proto__都指向父类的prototype
class A extends Object{}
class B extends A{}
console.log(B.prototype.__proto__==A.prototype)//true
3.所有的对象(指由类new出来的--普通对象)的__proto__指向类的prototype
class A extends Object{}
class B extends A{}
let b=new B()
console.log(b.__proto__==B.prototype)
(三) prototype---类的属性用来存用于原型链的属性
(四) constructor
class.prototype.constructor==class
obj.constructor==class
(五) super
1.作为函数时,在子类的constructor内调用
2.作为对象时,指向父类的prototype
(六)类可以有两个途径从外界获取参数
(1) extends 注意:子类写consturtor时候,里面必须要调用super()
(2) constructor(形参){} new ClassName(实参)
四 原型链
1.作用处于链底层的对象可以一直往上找属性
链条:b--b.__proto__-->B.prototype--B.prototype.__proto__-->A.prototype
所以只要一个对象的__proto__指向另个一个对象的prototype,那么这个对象就在原型链上
b B.prototype A.prototype 都在一条原型链上
class A{}
class B extends A{}
A.prototype.aa=11
console.log(B.prototype.aa)//11
class A{}
class B extends A{}
A.prototype.aa=11
console.log(new B().aa)//11
//因为b.__proto__==B.prototype
五 export
1.export右边的函数可以执行
export let obj=function(){
console.log('value')
return {a:1}
}()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。