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();
  • 相关阅读:
    1722 最优乘车 1997年NOI全国竞赛
    tarjan算法详解
    codevs 原创抄袭题 5969 [AK]刻录光盘
    Kosaraju算法详解
    1722 最优乘车 未完成
    codevs原创抄袭题 5960 信使
    1405 奶牛的旅行
    android 管理Bitmap内存
    Dynamics CRM 2013 初体验(3):新增加的功能
    在android画面切换时设置跟随变动的小圆圈
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/2938241.html
Copyright © 2011-2022 走看看