zoukankan      html  css  js  c++  java
  • 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扩展的方法

  • 相关阅读:
    python基础--模块&包
    服务启动项 Start类型详解
    安全测试
    Dos命令之Netsh
    句柄(Handle)
    共享内存(shared memory)
    linux下查找文件、排序、查看文件内容
    Http协议详解
    Eclipse中搭建Python开发环境
    批处理[Batch]
  • 原文地址:https://www.cnblogs.com/vipcjob/p/1707358.html
Copyright © 2011-2022 走看看