实现继承的圣杯模式

Daming 2018-05-12
3条评论 445 次浏览
Daming 2018-05-123条评论 445 次浏览
 function inherit(Target, Origin) {

        function F() {
        }//定义一个构造函数  用来连接

        F.prototype = Origin.prototype;// F的 原型  与  要继承的 构造函数的 原型  引用一致
        Target.prototype = new F();//这样 Target实例化的对象的__proto__ = F.prototype
        Target.prototype.constuctor = Target;//  将Target 原型的  constuctor 修改为自身
        Target.prototype.uber = Origin.prototype;//这样  我们可以通过 Target实例化的对象的__proto_.uber 找到 对象真实继承的原型
    }

    function Father() {
    }

    Father.prototype.lastName = 'wang';

    function Son() {
    }

    inherit(Son, Father);
    console.log(new Father());
    console.log(new Son());
0

实现继承的圣杯模式” 有 3 条评论

  1. 作者你好,对于这个继承的写法,之前我看yahoo的YUI库里面也是这么写的,它那个还把function F() {}放到了闭包里面,形成了一个私有化的变量,但是有个小问题就是

    0
  2. 直接改变原型链的指针的这种写法,似乎无法继承父类中的属性,比如在 Origin 中,function Origin(name) { this.name = name; },name 属性似乎就无法被继承,请教一下如何优化呢?

    0

发表评论

电子邮件地址不会被公开。