zoukankan      html  css  js  c++  java
  • javascript-面向对象之继承

    1.原型链继承(构造函数的原型对象等于另一个构造函数实例化的对象)

    function Box(){ 
    
    this.name='lee';
    
    }
    
    function Desk(){
    
    this.age=100; 
    
    }
    
    Desk.prototype=new Box();//Desk继承了Box,形成了一个原型链;
    
    var desk=new Desk(); 
    
    alert(desk.name);//lee
    
    function Table(){
    
    this.height=100;
    
    }
    
    Table.prototype=new Desk();//  Table 继承了Desk
    
    var table=new Table();//table具有两个继承的属性

    使用原型链继承存在的问题:

    1:当原型中存在引用类型时,存在数据修改的问题

    2:子类类型的对象无法给父类传参数


     

    2.对象冒充

     

    function Test(age){
    
         this.family=["mom","dad"];
    
          this.age=age;
    
        }
    
        function Util(age){
    
            Test.call(this,age);//指明哪个对象来调用Test函数
    
            //this就是我们创建的Util对象
    
        }

    对象冒充的问题 :不能使用原型 所有不能实现数据共享


     

      3.组合继承(原型链与对象冒充)

     

       function Test(age){
    
       this.family=["mom","dad"];
    
       this.age=age;
    
       }
    
       Test.prototype.fun=function(){
    
       return this.age+this.family;
    
       }
    
       function Util(age){
    
       Test.call(this,age); //对象冒充
    
       }
    
       util.prototype=new Text();//这是原型链
    
       var u=new Util(26);
    
       alert(u.age);

    4.原型式继承  // o是一个对象

    function getObj(o){//返回原型是o的一个对象
    
    function F(){}
    
    F.prototype=o;
    
    return new F();
    
    }
    
    //原型对象
    
    var person={
    
    name:"Tom",
    
    family:{'mom',"dad"}
    
    }
    
    var obj1=getObj(person);

    5.寄生 继承(原型式+工厂模式)

     

     function getobj(o){
    
      function F(){};
    
      F.prototype=o;
    
      obj.arr=["html",'css'];
    
      return new F();
    
     }
    
     //寄生函数
    
     function createObj(o){
    
      var  obj=getobj(o);
    
      return obj;
    
     }
    
     //原型对象
    
     var person={
    
       name:"han",
    
       age:23
    
       }
    
     var a=createObj(person);
  • 相关阅读:
    linux下的内存映射函数mmap详解及示例代码
    Android平台上使用属性系统(property system)
    Android筆記
    Android Prelink
    DataGridView BindingSource BindNavigator
    可排序的ListView
    开源2D绘图组件ZedGraph
    BackgroundWorker示例
    级联datagridview 利用datarelation和bindingsource
    继承DataGridView
  • 原文地址:https://www.cnblogs.com/jwhgz/p/6092381.html
Copyright © 2011-2022 走看看