zoukankan      html  css  js  c++  java
  • js 继承

    1. 使用对象冒充实现继承

    function Person(username){
        this.username=username;
        this.sayHello=function(){
            alert(this.username);
        }
    }
    
    function Child(username,password){
        this.superUserName=Person;
        this.superUserName(username);
        delete this.superUserName;
        
        this.sayWord=function(){
            alert(password);
        }
    }
    
    var a=new Person('a');
    a.sayHello();
    
    var b=new Child('b','2b');
    b.sayHello();
    b.sayWord();

    2. 使用Function的call方法

    function Person(username){
        this.username=username;
        this.sayHello=function(){
            alert(this.username);
        }
    }
    
    function Child(username,password){
        Person.call(this,username);
        
        this.sayWord=function(){
            alert(password);
        }
    }
    
    var a=new Person('a');
    a.sayHello();
    
    var b=new Child('b','2b');
    b.sayHello();
    b.sayWord();

    3.使用Function的apply方法

    function Person(username){
        this.username=username;
        this.sayHello=function(){
            alert(this.username);
        }
    }
    
    function Child(username,password){
        Person.apply(this,[username]);
        
        this.sayWord=function(){
            alert(password);
        }
    }
    
    var a=new Person('a');
    a.sayHello();
    
    var b=new Child('b','2b');
    b.sayHello();
    b.sayWord();

    4.原型方式实现继承(无法实现参数传递)

    function Person(){
    
    }
    
    Person.prototype.username='hello';
    Person.prototype.sayHello=function(){
        alert(this.username);
    }
    
    function Child(){
        
    }
    Child.prototype=new Person();
    Child.prototype.password='word';
    Child.prototype.sayWord=function(){
        alert(this.password);
    }
    
    var a=new Person();
    a.sayHello();
    
    var b=new Child();
    b.sayHello();
    b.sayWord();

    5.原型混合方式实现继承

    function Person(username){
        this.username=username;
    }
    Person.prototype.sayHello=function(){
        alert(this.username);
    }
    
    function Child(username,password){
        this.password=password;
        Person.call(this,username);
    }
    Child.prototype=new Person();
    Child.prototype.sayWord=function(){ //放在new Person后面,不然会被覆盖
        alert(this.password);
    }
    var a=new Person('a');
    a.sayHello();
    
    var b=new Child('b','2b');
    b.sayHello();
    b.sayWord();
  • 相关阅读:
    【原创】kafka consumer源代码分析
    【原创】kafka server源代码分析(二)
    【原创】kafka server源代码分析(一)
    【原创】kafka controller源代码分析(二)
    棋盘格检测
    人脸三维建模A Morphable Model For The Synthesis Of 3D Faces(三维人脸合成的变形模型)
    汉字识别关键技术与应用
    城市研究中的常见数据类型及其应用场景
    OpenCV Sift源码分析
    OpenCV feature2d
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/2938241.html
Copyright © 2011-2022 走看看