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();
  • 相关阅读:
    2018.4.5课堂笔记
    黑白染色——封锁阳光大学
    末日游戏——杨辉三角+搜索
    dilworth定理+属性排序(木棍加工)
    伯努利错装信封问题
    zhx'code1
    字符串-----KMP竟然是18禁
    Presto Event Listener开发
    Presto安装完成之后需要做的
    Apache Calcite 论文学习笔记
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/2938241.html
Copyright © 2011-2022 走看看