js继承原理

- 传统方法

//  参数为两个类
   function extend(subClass,superClass)
   {
      var f=function(){}
      f.prototype=superClass.prototype;
      subClass.prototype=new f();
      //  将子类的原型对象的构造类指向自己的类
      subClass.prototype.constructor=subClass;
      if(superClass.prototype.constructor==Object.prototype.constructor)
      //  superClass的原型是一个Object对象,但我们让这个Object对象的构造类不是function object()而是superClass
      superClass.prototype.constructor==superClass;
   }


//  用法例子:
function Point(x, y){
    _x: x,
    _y: y
}

Point.prototype.toString = function() {
   return this._x + ' ' + this._y;
};

function ColorPoint(x, y, color){
    Point.apply(this,[x, y]);
    this._color = color;
}

extend(ColorPoint, Point);

ColorPoint.prototype.toString = function() {
    return this._color + ' ' + Point.toString();
};

var point1 = new ColorPoint(1, 2, 'yellow');

这里写图片描述

这里写图片描述

- ES6 class类继承方法

    class Point {
        constructor(x, y) {
            this._x = x;
            this._y = y;
        }

        toString() {
            return this._x + ' ' + this._y;
        }
    }


    class ColorPoint extends Point {
        constructor(x, y, color) {
            super(x, y);
            this._color = color;
        }

        toString() {
            return this._color + ' ' + super.toString();
        }
    }

    let point1 = new ColorPoint(1, 2, 3);

这里写图片描述

两个继承的原理是相同的!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值