super() 返回的是 this
console.log(super(props)) 返回的是this
super挂载的属性
- 当在实例方法里,super指向父类的原型对象
class Parent{
c=1
}
Parent.prototype.d = 1
class Child extends Parent{
log=()=>{
// 这里的super执行 Parent.prototype
console.log('super.c',super.c)
console.log('super.d',super.d)
}
}
const child = new Child();
console.log(child);
child.log(); //undefind
静态方法中的super指向父类 ```javascript class Parent{ c=1 } Parent.prototype.d = 1 Parent.e=3 class Child extends Parent{ log=()=>{ // 这里的super执行 Parent.prototype
} static log_s = ()=>{ console.log(‘super.c’,super.c) console.log(‘super.d’,super.d)
console.log(super.e); //3
} }
child.log_s();
- ES6 规定,通过super调用父类原型对象上的方法时,方法内部的this指向子类。
> 实际上执行的是 super.sport.call(this);
```javascript
class Parent{
a= 1
log (){
console.log(this.a)
}
}
new Parent()
class Child extends Parent{
a = 2
clog = ()=>{
super.log()
}
}
new Child().clog();