`
purpen
  • 浏览: 785668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript定义类或对象之动态原型方法

阅读更多

    在javascrip定义类和对象有很多种方法,但是,对于动态原型方法定义的方式,我还是很陌生的.今天看了js高级程序设计才发现,动态原型方法的基本思想与混合的构造函数/原型方式相同,即在构造函数内定义非函数属性,而函数属性则利用原型属性定义.唯一的区别是赋予对象方法的位置.

 下面是用动态原型方法来写Car类:

  1. function Car(sColor, iDoors, iMpg) {   
  2.     this.color = sColor;   
  3.     this.doors = iDoors;   
  4.     this.mpg = iMpg;   
  5.     this.drivers = new Array("Mike""Sue");   
  6.        
  7.     //注意   
  8.     if (typeof Car._initialized == "undefined") {   
  9.         Car.prototype.showColor = function() {   
  10.             alert( this.color );   
  11.         };      
  12.        Car._initialized = true;  
  13.    }   
  14.      
  15. }   

    直到检查typeof Car._initialized 是否等于"undefined" 之前,这个构造函数都未发生变化.这行代码是动态原型方法中最重要的部分.如果这个值未定义,构造函数将用原型方式继续定义对象的方法,然后把Car._initialized设置为true. 如果这个值定义了(它的值为true时, typeof的值为Boolean), 那么就不再创建该方法.简而言之,该方法使用标志来判断是否己给原型赋予了任何方法.该方法只创建并赋值一次,传统的OOP开发者会高兴地发现,这段代码看起来更像其他语言中的类定义了.

    呵呵,动态原型方法也是很流行的,在功能上与构造函数/原型方式等价.可以采用这两种方式中的任何一种.不过,需要注意的是,不要单独使用经典的构造函数或原型方式,因为这样会给代码引入问题.(具体问题,在开发中自己发现吧^_^)

 

分享到:
评论
1 楼 baishou520 2008-06-06  
    

相关推荐

    JavaScript中定义对象原型的两种使用方法

    本文主要对JavaScript中定义对象原型的两种使用方法进行介绍,具有很好的参考价值,下面就跟小编一起来看下吧

    JavaScript你一定要搞懂的原型链

    当访问一个对象的属性或方法时,如果对象本身没有定义该属性或方法,JavaScript 就会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的末尾(null)为止。 原型链图是用于表示 JavaScript 中对象之间原型...

    JavaScript程序设计课件:原型与继承.pptx

    当访问某个对象中的一个不存在的属性或方法时,会自动调用原型中的属性和方法。也就是说,基于原型创建的对象会自动拥有原型的属性和方法。 之前我们学过构造函数,通过构造函数也可以使两个对象具有相同的属性和...

    关于JavaScript定义类和对象的几种方式

    可以看看这个例子: 代码如下: var a = ‘global’; (function () { alert(a); var a = ‘local’;...因为所有JavaScript函数都是一个对象。在函数里声明的变量可以看做这个对象的“类似属性”。对

    JavaScript 基于原型的对象(创建、调用)

    JavaScript中的对象有三种 1,内部对象 如Array,... 在我们写js代码的时候,内部对象是不可避免的要引用,但是光靠这些对象是不够的,所以需要我们自己定义对象,这个时候通常用到的对象是第三种,即基于原型的对象,

    JavaScript定义类或函数的几种方式小结

    工厂方式 javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码: 代码如下: [removed] //定义 var oCar = new Object();

    讲解JavaScript的面向对象的编程

    本人在带学生使用EXT框架时,我发现学生阅读Ext的sample代码有问题,特别是对JavaScript的面向对象编程的书写方式不熟悉,于是,写了四个sample来说明它现代JS编程的对类的定义方式、类继承的方式,以及怎样发展到...

    深入理解javascript构造函数和原型对象

    对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅。。(哔!)。

    JavaScript定义类的几种方式总结

    提起面向对象我们就能...javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码: 代码如下:[removed] //定义 var oCar = new Objec

    javascript中对象的定义、使用以及对象和原型链操作小结

    本文实例总结了javascript中对象的定义、使用以及对象和原型链操作。分享给大家供大家参考,具体如下: 1. 除了5种基本类型外,JS中剩下的就是对象 (1)对象的定义: 直接定义: var test={x:1,y:1} new方式创建...

    JavaScript面向对象程序设计中对象的定义和继承详解

    本文实例讲述了JavaScript面向对象程序设计中对象的定义和继承。分享给大家供大家参考,具体如下: 在面向对象的Javascript编程中,希望代码优雅有高效是非常重要的。...(2)用原型方式定义对象的函数

    Javascript中类式继承和原型式继承的实现方法和区别之处

    但是javascript中并没有定义这种实现的机制,如果一个类需要继承另一个类,这个继承过程需要程序员自己通过编码来实现。 一、类式继承的实现 1、创建一个类的方式: //定义类的构造函数 function Person(name

    源文件程序天下JAVASCRIPT实例自学手册

    4.5.1 通过定义对象的构造函数的方法 4.5.2 通过对象直接初始化的方法 4.5.3 修改、删除对象实例的属性 4.5.4 通过原型为对象添加新属性和新方法 4.5.5 自定义对象的嵌套 4.5.6 内存的分配和释放 4.6 本章小结 第5章...

    Javascript数组操作高级心得整理

    (4) 定义类或对象的方法 16  工厂方式 16  构造函数方式和原型方式 17  混合的构造函数/原型方式(常用方式) 18  动态原型方法(常用方式) 18  总结(使用哪种方式好) 18 2. 修改对象 18 (1) 创建新方法 18 ...

    JavaScript权威指南(第6版)(附源码)

    9.1 类和原型 9.2 类和构造函数 9.3 JavaScript中Java式的类继承 9.4 类的扩充 9.5 类和类型 9.6 JavaScript中的面向对象技术 9.7 子类 9.8 ECMAScript 5 中的类 9.9 模块 第10章 正则表达式的模式匹配 10.1 正则...

    JavaScript作用域、闭包、对象与原型链概念及用法实例总结

    本文实例讲述了JavaScript作用域、闭包、对象与原型链概念及用法。分享给大家供大家参考,具体如下: 1 JavaScript变量作用域 1.1 函数作用域 没有块作用域:即作用域不是以{}包围的,其作用域完成由函数来决定,...

    JavaScript权威指南(第6版)

    9.1 类和原型 9.2 类和构造函数 9.3 JavaScript中Java式的类继承 9.4 类的扩充 9.5 类和类型 9.6 JavaScript中的面向对象技术 9.7 子类 9.8 ECMAScript 5 中的类 9.9 模块 第10章 正则表达式的模式匹配 10.1 正则...

Global site tag (gtag.js) - Google Analytics