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

     

     

  • 相关阅读:
    我的知识库(4) java获取页面编码(Z)
    知识库(3)JAVA 正则表达式 (超详细)
    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts
    某人总结的《英语听力的技巧 》,挺搞的
    我的知识库(5)java单例模式详解
    构建可扩展程序
    SerialPort (RS232 Serial COM Port) in C# .NET
    Python学习笔记——String、Sequences
    UI题目我的答案
    jQuery学习系列学会操纵Form表单元素(1)
  • 原文地址:https://www.cnblogs.com/yuri2016/p/8443414.html
Copyright © 2011-2022 走看看