super() 返回的是 this

console.log(super(props)) 返回的是this

super挂载的属性

  • 当在实例方法里,super指向父类的原型对象
  1. class Parent{
  2. c=1
  3. }
  4. Parent.prototype.d = 1
  5. class Child extends Parent{
  6. log=()=>{
  7. // 这里的super执行 Parent.prototype
  8. console.log('super.c',super.c)
  9. console.log('super.d',super.d)
  10. }
  11. }
  12. const child = new Child();
  13. console.log(child);
  14. 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)

    1. console.log(super.e); //3

    } }

child.log_s();

  1. - ES6 规定,通过super调用父类原型对象上的方法时,方法内部的this指向子类。
  2. > 实际上执行的是 super.sport.call(this);
  3. ```javascript
  4. class Parent{
  5. a= 1
  6. log (){
  7. console.log(this.a)
  8. }
  9. }
  10. new Parent()
  11. class Child extends Parent{
  12. a = 2
  13. clog = ()=>{
  14. super.log()
  15. }
  16. }
  17. new Child().clog();