ES6-extends

extends继承,ColorPoint 子类,Point 父类


1.super关键字,它在这里表示父类的构造函数,用来新建父类的this对象。
3.super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同

4.第一种情况,super作为函数调用时,代表父类的构造函数

5.super作为对象时,指向父类的原型对象。



class Point{  
  constructor(x, y) {  
    this.x = x;  
    this.y = y;  
  }  
}  
Object.assign(Point.prototype, {  
  toString(){  
    return this.x+this.y;  
  
  },  
  toValue(){}  
});


class ColorPoint extends Point {

  constructor(x, y, color) {
    super(x, y); // 调用父类的constructor(x, y),
    this.color = color;
  }

  toString() {
    return this.color + ' ' + super.toString(); // 调用父类的toString()
  }
}

let cPoint = new ColorPoint(3,3,"red");
console.log(cPoint);


class A {
  constructor(x){
    this.x = 1;
  };
  p() {
    return 2;
  }
}

class B extends A {
  constructor(x) {
     super();
     this.x = 2;
     super.x = 3;
    console.log(this.x); // 2
    console.log(super.x); // undefined
    console.log(A.prototype.x);
    // super.x赋值为3,这时等同于对this.x赋值为3。而当读取super.x的时候,读的是A.prototype.x,所以返回undefined。
  }
}

let b = new B();

let a = new A();

console.log(a.x);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值