js面向对象之继承

mnblue
mnblue 发布于 2016-12-30 16:20:48 浏览:143 类型:原创 - 随笔 分类:JavaScript - JavaScript 面向对象 二维码: 作者原创 版权保护
对象的继承分为 拷贝继承  类式继承 原型继承等

1.拷贝继承(通用型)

   属性的继承:调用父类的构造函数,然后用 call 改变 this 的指向;
   方法的继承:用for in  将父类的方法一个一个复制给子类

   例如:
                        function Aaa()      //父类
                        {
                             this.name='小明';
                        }
                        Aaa.prototype.showName=function()
                        {
                             alert(this.name);
                        }
                          
                        function Bbb()  //子类
                        {
                               Aaa.call(this);   //子类继承父类的属性
                        }
                       
                         function  extend(obj1,obj2)
                        {
                                for(var attr in obj1)
                                {
                                        obj2[attr]=obj1[attr];
                                }
                        }
                       
                        var a1=new Aaa();    //new 后边调用的函数就叫做构造函数
                          var b1=new Bbb();
                       
                        extend(a1,b1);
                       
                        b1.name='小强';
                       
                        a1.showName();
                        b1.showName();

  2.类式继承
  (其实js中没有类的概念,此方法是从后台语言演变的,可以 把构造函数看做类)
     继承的时候也要把方法跟属性分开继承
    (适合new构造函数的形式)
   例如:
                        function Aaa()      //父类
                        {
                             this.name='小明';
                        }
                        Aaa.prototype.showName=function()
                        {
                             alert(this.name);
                        }
                          
                        function Bbb()  //子类
                        {
                               Aaa.call(this);   //子类继承父类的属性
                        }
                       
                       
                        function F(){}           // 创建一个空的构造函数
                        F.prototype=Aaa.prototype;                //将父类的原型复制给F,这样就只继承了方法
                        Bbb.prototype=new F();                     
                        Bbb.prototype.constructor=Bbb;                 //constructor 查看对象的构造函数  将Bbb的构造函数改回
                       
                        var a1=new Aaa();
                        var b1=new Bbb();
                        b1.name='小强';
                        a1.showName();
                        b1.showName();
                                       

3.原型继承
(适合无new的形式)

           
          例如:
                      var a={
                                name:'小明'
                        };

                        var b=new cloneObj(a);
                       
                        function cloneObj(obj)
                        {
                                var F=function(){};
                                F.prototype=obj;
                                return new F();
                        }
                       
                        b.name='小强';
                        alert(a.name);       
                        alert(b.name);
z
给个赞 0 人点赞
收藏 1 人收藏
评论 已有 0 条评论;以下用户言论只代表其个人观点,不代表 前端网(QDFuns) 的观点或立场。
登录 以后才能发表评论
最新评论
还没有任何评论呢,赶紧抢先来一发吧!
mnblue mnblue 作者

作者最新