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扩展的方法

  • 相关阅读:
    安装了windows mobile 5.0 pocket pc SDK
    落户这里
    NOIP 2021 游记
    log4net重复记日志
    Eclipse中properties文件中文显示编码、乱码问题
    查找包下已经实施的增强
    vs2010 编译 Ogre 1.8 源码
    Ogre 设计模式之Singleton
    23种设计模式的解析与C++实现及源码打包下载
    vs2010 编译 SALVIA源码
  • 原文地址:https://www.cnblogs.com/vipcjob/p/1707358.html
Copyright © 2011-2022 走看看