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();
  • 相关阅读:
    HTML 块级、内联、内联块级元素(转)
    CSS margin-top父元素下落
    JS 窗口resize避免触发多次
    ASP.NET 自制免费.NET代码生成器KevinCodeBuilder
    Plugin 中国省市选择插件
    Git 常用命令(转)
    JS Regex正则表达式的使用(转)
    Git 详细中文安装教程(转)
    业务逻辑中的测试总结(一)----比值类需求测试分解
    python学习笔记系列----(四)模块
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/2938241.html
Copyright © 2011-2022 走看看