• javascript 继承


    //对象工厂模式
    function createCar(color,doors,mpg){
        var tmpCar = new Object();
        tmpCar.color = color;
        tmpCar.doors = doors;
        tmpCar.mpg = mpg;
        tmpCar.showColor = function() { alert(this.color); };
        return tmpCar;
    }
    var car1 = createCar("red",4,20);
    var car2 = createCar("blue",2,15);
    car1.showColor();
    car2.showColor();
    //问题:这样写每个对象都有自己的showColor函数

    function showColor(){ alert(this.color); }
    function createCar(color,doors,mpg){
        var tmpCar = new Object();
        tmpCar.color = color;
        tmpCar.doors = doors;
        tmpCar.mpg = mpg;
        tmpCar.showColor = showColor;
        return tmpCar;
    }

    //用构造函数的方式,去掉函数内的临时变量
    function Car(color,doors,mpg){
        this.color = color;
        this.doors = doors;
        this.mpg = mpg;
        this.showColor = showColor;
    }
    //问题:showColor函数不像对象的方法

    //原型链
    function Car(color,doors,mpg){
        this.color = color;
        this.doors = doors;
        this.mpg = mpg;
    }
    Car.prototye.showColor = function() { alert(this.color); }

     //继承

    //原型链

    function Person(name){
        this.name=name;
    }
    Person.prototype.ShowName=function(){
        return "hello "+this.name;
    };
    Person.prototype.ShowPara=function(para){
        return "your para is:" + para;
    }

    function User(name,password){
        this.name=name;
        this.password=password;
    }
    User.prototype=new Person();
    User.prototype.ShowPwd=function(){
        return "your pwd: "+this.password;
    };

    var user=new User("terry",123456);
    alert(user.ShowName());
    alert(user.ShowPwd());
    alert(user.ShowPara("ookk"));

    //call方法

    function Person(name){
        this.name=name;
        this.ShowName=function(){
            return "hello "+this.name;
        };
    }
    Person.prototype.ShowPara=function(para){
        return "your para is:" + para;
    }

    function User(name,password){
        Person.call(this,name);
        this.name=name;
        this.password=password;
    }
    User.prototype.ShowPwd=function(){
        return "your pwd: "+this.password;
    };

    var user=new User("terry",123456);
    alert(user.ShowName());
    alert(user.ShowPwd());
    //alert(user.ShowPara("ookk"));  //错误,  call没有包括prototype扩展的方法

  • 相关阅读:
    证明欧几里得算法的正确性
    基础练习 十六进制转换八进制
    算法训练 关联矩阵
    寻找数组中最大值
    Torry的困惑(基本型)
    最小乘积(基本型)
    矩阵乘法
    SaltStack Char02 组件
    SaltStack Char01
    Python 学习手册, char 14
  • 原文地址:https://www.cnblogs.com/vipcjob/p/1707358.html
Copyright © 2020-2023  润新知