码迷,mamicode.com
首页 > Web开发 > 详细

模拟 extjs 底层继承

时间:2017-11-26 12:51:30      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:hello   cti   改进   span   obj   tor   undefined   color   object   

1、混合继承的弊端

  混合继承在继承原型的时候,其实将 父类的模板 再次继承,影响效率

  

 // 混合继承
    function Person(name,age) {
        this.name = name;
        this.age = age;
    }
    Person.prototype = {
        constructor : Person,
        sayHello : function () {
            alert("hello");
        }
    }

    function Boy(name,age,sex) {
        //Person.call(this,name,age);
        this.sex = sex;
    }
    Boy.prototype = new Person();           //  虽然 在 new Person 的时候,并没有传入参数,但是 还是实例化了 Person 模板 , 只是参数的值默认为 undefined

    var b = new Boy("z3",25,"");
    alert(b.name);          // undefined
    alert(b.sex);           //

改进方法 

 // 改进方法 , 模拟 extjs 底层继承实现方式
    function Person(name,age) {
        this.name = name;
        this.age = age;
    }
    Person.prototype = {
        constructor : Person,
        sayHello : function () {
            alert("hello");
        }
    }

    function Boy(name,age,sex) {
        Boy.superClass.constructor.call(this,name,age);
        this.sex = sex;
    }

    function extend(sub,sup) {
        var F = new Function();
        F.prototype = sup.prototype;
        sub.prototype = new F();
        sub.prototype.constructor = sub;
        sub.superClass = sup.prototype;
        if(sup.prototype.constructor = Object.prototype.constructor){
            sup.prototype.constructor = sup;
        }
    }
    extend(Boy,Person);
    var b = new Boy("z3",25,"");
    alert(b.name);              // z3

 

模拟 extjs 底层继承

标签:hello   cti   改进   span   obj   tor   undefined   color   object   

原文地址:http://www.cnblogs.com/debra/p/7898504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!