• Javascript 定义类或对象


    1、工厂方式

     function createCar(){

      var oTempCar=new Object;

      oTempCar.color="Red";

      oTempCar.doors=4;

      oTempCar.showColor=function(){ alert(this.color);};

      return oTempCar;

     }

    var oCar1=createCar();

    缺点:1)语义上不像使用带有构造函数的new运算符那么正规;

         2)每次调用createCar(),都要创建新函数showColor(),每个对象都有自己的showColor()版本;

    2、构造函数方式

    function Car(sColor,iDoors){

      this.color=sColor;

      this.doors=iDoors;

      this.showColor=function(){alert(this.color;)};

    }

    var oCar1=new Car("Red",4);

    缺点:1)重复生产函数,每个对象都创建独立的函数版本;

    3、原型方式

    function Car(){}

    Car.prototype.color="Red";

    Car.prototype.doors=4;

    Car.prototype.drivers=new Array("Mike","Sue");

    Car.prototype.showColor=function(){alert(this.color);};

    var oCar1=new Car();

    缺点:1)属性drivers是指向Array对象的指针,Car的每个实例都指向同一个数组;

    优点:1)可以使用instanceof运算符检查给定变量指向的对象的类型,alert(oCar1 instanceOf Car);  //"true"

    4、混合的构造函数/原型方式

    function Car(sColor,iDoors){

      this.color=sColor;

      this.doors=iDoors;

      this.drivers=new Array("Mike","Sue");

    }

    Car.prototype.showColor=function(){alert(this.color);};

    var oCar1=new Car("Red",4);

    5、动态原型方法

    function Car(sColor,iDoors){

      this.color=sColor;

      this.doors=iDoors;

      this.drivers=new Array("Mike","Sue");

      

      if(typeof Car._initialized=="undefined"){

        Car.prototype.showColor=function(){alert(this.color);};

        Car._initialized=true;

      }

    }

    优点:1)语义上更新Java其他语言中的类定义;

    -- 摘抄于《 JavaScript 高级程序设计》 --

  • 相关阅读:
    jquery $(document).ready() 与window.onload的区别
    【Ionic+AngularJS 开发】之『个人日常管理』App(二)
    【Ionic+AngularJS 开发】之『个人日常管理』App(一)
    移动App服务端架构设计
    jQuery 事件用法详解
    CSS实现的几款不错的菜单栏
    css清除浮动的方法总结
    常见浏览器的兼容问题
    推荐两个界面原型设计工具--GUIDesignStudio 和 Mockups For Desktop
    如何用js获取浏览器URL中查询字符串的参数
  • 原文地址:https://www.cnblogs.com/null2/p/3590674.html
Copyright © 2020-2023  润新知