loading...

1

6.寄生组合继承

javascript读完大概需要2分钟

  • 发布时间:2017-07-26 15:35 星期三
  • 刘伟波
  • 144
  • 更新于2017-07-26 15:35 星期三

寄生组合继承

    <script>
        //1.原型继承 2.对象冒充 3.组合继承(常用) 4.原型式继承
    //5.寄生式继承 6.寄生组合继承

    function Person(age) {//共同的属性放在构造函数
        this.age=age;
        this.family=["爸爸","妈妈"];
    }
    Person.prototype.fun= function () {//共同的方法用原型
        return this.age+this.family;
    };
    function Student(age) {//解决引用类型改变值其他的也改变
        Person.call(this,age);//第二次调用Person函数
    }
//    Student.prototype=new Person();//第一次调用Person函数
    //解决两次调用的问题 采用寄生
    function getObj(o) {
        function F() {}
        F.prototype=o;
        return new F();
    }
    function createObj(Person,Student) {//寄生函数 解决了两次调用的问题
        var obj=getObj(Person.prototype);
        Student.prototype=obj;
        obj.constructor=Student;
    }
    createObj(Person,Student);//    Student.prototype=new Person();//第一次调用Person函数
    var s1=new Student(22);
    var s2=new Student(22);
    console.log(s2.fun())
    console.log(s2.constructor)
    </script>


你可能感兴趣的文章

    发表评论

    评论支持markdown,评论内容不能超过500字符,如果内容过多或者要及时回复,建议去 平台,一般一天之内就会回复。
    关于技术问题或者有啥不懂的都可以留言,我会定期回复答 疑,推荐最新仓库 前端知识体系, 感謝支持!