2.1解决只继承原型的副作用(临时构造器)

function Shape(){}
    Shape.prototype.name = 'shape';
    Shape.prototype.toString = function () {
        return this.name;
    };

    function TwoDShape(){}
    var F = function () {};
    F.prototype = Shape.prototype;
    TwoDShape.prototype = new F();
    TwoDShape.prototype.constructor = TwoDShape;
    TwoDShape.prototype.name = '2D shape';

    function Triangle(side,height) {
        this.side = side;
        this.height = height;
    }
    var F = function(){};
    F.prototype = TwoDShape.prototype;
    Triangle.prototype = new F();
    Triangle.prototype.constructor = Triangle;
    Triangle.prototype.name = 'Triangle';
    Triangle.prototype.getArea = function () {
        return this.side * this.height/2;
    };
    var my = new Triangle(5,10);
    my.getArea();       //输出 25
    my.toString();      //输出 "Triangle"
//!!!!!!!      通过这种方法,我们就可以在保持原型链的基础上使父对象的属性摆脱子对象的影响了:
    my.__proto__.__proto__.__proto__.constructor;       //输出 Shape()
    var s = new Shape();
    s.name;                                              //输出 “shape”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值