zoukankan      html  css  js  c++  java
  • JS类对象实现继续的几种方式

    0. ES6可以直接使用class,extends来继承.

    1.  原型继承

     1       
     2 父类:
     3 
     4       function Persion(name,age){   
     5         this.name = name;   
     6         this.age = age;   
     7        } 
     8  
     9        // 父类的原型对象属性   
    10        Persion.prototype.id = 10;  
    11 
    12 
    13        // 子类   
    14        function Boy(sex){   
    15         this.sex = sex;  
    16        }  
    17        // 继承实现   
    18        Boy.prototype = new Persion('Yuri',30);  //要初始化父类不优雅~
    19        var b = new Boy();  
    20  
    21         alert(b.name)// Yuri   
    22         alert(b.id)//10  

    //这种原型继承的特点:既继承了父类的模板,又继承了父类的原型对象。缺点就是父类实例传参,不是子类实例化传参,不符合常规语言的写法。

    2、类继承(借用构造函数的方式继承)

    //  父类   
    function Persion(name,age){   
        this.name = name;   
        this.age = age;   
    }  
    
    // 父类的原型对象属性   
    Persion.prototype.id = 10;  
    
    
    // 子类   
    function Boy(name,age,sex){   
        //call apply 实现继承  
        Persion.call(this,name,age);  
        this.sex = sex;  
    }  

    //Boy.prototype = new Persion(); //这个打开那个原型链对象就可以继承了.
    var b = new Boy('Yuri',30,'男'); alert(b.name) // Yuri alert(b.id)//undinfind 父类的原型对象并没有继承

    //这种原型继承的特点:继承了父类的模板,不继承了父类的原型对象。优点是方便了子类实例传参,缺点就是不继承了父类的原型对象

    3. 极简主义

    //定义父类
    var Person = {
        createNew: function(){
          var person = {};
                     person.name='Yuri';
          person.sleep = function(){ alert("睡懒觉"); };
          return person;//返返回这个对象
        }
    };
    //子类
    var SuperPerson={
        
          createNew:function(){
                 var private; //还可以定义私有属性.
                 var  superperson=Person.createNew();
                 //superperson就要以使用父类的方法和属性了.
                //同时增加自己的属性
                 superperson.fly=function(){}
                 superperson.power="";
                 return superperson;
          }
    }      
    
    var test=SuperPerson.createNew();
    //使用子类的createNew就可以实现继承了.
    console.log(
    test.fly, test.name, test.power)   

    没有使用任何的prototype,apply,call

     

     

  • 相关阅读:
    [DB2]删除大数据量数据及57011错误处理
    [DB2]DB2日常维护——REORG TABLE命令优化数据库性能
    [转]解读DIV CSS网页布局中CSS无效十个原因
    [DB2]DB2 sqlstate 57016 原因码 "7"错误
    [翻译]15个最常见的WCF问题
    [DB2]DB2数据库备份与恢复和导出表结构与导入导出表数据
    [转]网站(bs系统)怎样实现即时消息思路总结
    【摘抄】DB2字符集问题
    [转]jQuery必知必熟基础知识
    sql 2005/2008 订阅与发布的几个概念
  • 原文地址:https://www.cnblogs.com/yuri2016/p/8443414.html
Copyright © 2011-2022 走看看