`
purpen
  • 浏览: 795356 次
  • 性别: 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  
    

相关推荐

    第15章 javascript面向对象与原型

    总的来说,JavaScript中的面向对象编程与传统的基于类的OOP有所不同,它通过原型链和构造函数来实现对象的创建和继承。正确理解并运用这些概念,可以让开发者更有效地利用JavaScript进行面向对象的编程。

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

    本文将深入探讨两种常见的定义对象原型的方法:通过`prototype`属性和通过对象字面量。 ### 第一种方法:使用`prototype`属性 ```javascript function Person() { this.username = new Array(); this.password =...

    JavaScript定义类的几种方式总结

    JavaScript定义类的几种方式包括工厂方式、构造函数和原型方式,每种方法都有其特点和适用场景,接下来我们将详细探讨。 工厂方式是最早期的面向对象编程在JavaScript中的实践之一。使用工厂方式定义类,本质上就是...

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

    通过构造函数定义对象的属性,通过原型定义对象的方法。这样,每个对象的属性仍然是唯一的,而方法则可以通过原型链被所有对象共享。混合模式的代码示例如下: ```javascript function Car(color, doors) { this....

    JavaScript定义类和对象的方法

    举个例子,我们也可以通过Object类实例化的方式来定义对象: ```javascript var oClassA = new Object(); // 实例化Object类创建对象 oClassA.aaa = 'This is a class example!'; // 添加属性aaa oClassA.methodA = ...

    JavaScript你一定要搞懂的原型链

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

    浅析JavaScript实现基于原型对象的“继承”.pdf

    本文旨在对JavaScript实现基于原型对象的“继承”进行深入分析,并与基于类的继承进行比较。通过对JavaScript的原型继承机制的介绍和实例分析,提出一个改进的“寄生组合模式”,使读者能够更好地理解和应用...

    javascript面向对象之定义成员方法实例分析.docx

    在 JavaScript 中,可以通过多种方式来定义对象及其成员方法。本文将深入探讨如何在 JavaScript 面向对象编程中定义成员方法,并通过具体实例来分析其使用技巧。 #### 二、JavaScript中的构造函数与成员方法 在 ...

    JavaScript原型链

    在JavaScript中,一切皆为对象,而原型链则是实现对象间属性和方法共享的一种机制。理解原型链对于深入学习JavaScript至关重要。 首先,每个JavaScript对象都有一个内部属性`[[Prototype]]`,通常我们通过`__proto_...

    举例说明JavaScript中的实例对象与原型对象_.docx

    如果在`Person.prototype`上定义了一些属性或方法,比如`name`、`age`和`sayName`: ```javascript Person.prototype = { constructor: Person, name: 'zxs', age: 24, sayName: function() { alert(this.name)...

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

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

    面向对象JavaScript精要(英文原版pdf)

    - **类**:类是一种模板或蓝图,用于创建具有相似特性和行为的对象。 - **对象**:对象是类的实例,具有特定状态和行为。 - **继承**:继承允许一个类继承另一个类的属性和方法,从而支持代码重用。 - **封装**:...

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

    当访问一个对象的属性或方法时,如果在对象本身中找不到,JavaScript引擎会继续在其原型对象中查找,这个过程会一直持续到找到该属性或方法,或者到达原型链的末端(即Object的原型对象)。 工厂模式是一种创建对象...

    JavaScript对象定义

    JavaScript是一种基于原型的对象导向语言,它的对象定义方式具有独特的灵活性。在本文中,我们将深入探讨JavaScript对象的定义、创建方法以及相关的工具和技术。 首先,我们要了解JavaScript对象的本质。对象是由...

    javascript 类, 对象 深入学习

    首先,我们需要明白在JavaScript中,类是一种语法糖,实际上它是基于原型(prototype)的面向对象编程。ES6引入了`class`关键字,使得代码更加简洁易读,但其底层仍然是基于函数和原型操作。因此,理解函数和原型是...

    面向对象JavaScript开发

    3. **原型对象**:`prototype`属性是构造函数的一个属性,用于定义实例的公共属性和方法。当尝试访问对象的一个属性时,JavaScript会首先在当前对象中查找,如果找不到,就会沿着原型链向上查找,直到找到为止。 4....

    javascript 原型模式实现OOP的再研究

    当我们创建一个新的实例时,如果尝试访问该实例上不存在的属性或方法,JavaScript会查找该实例的`__proto__`链,直至找到相应的属性或方法。 在给出的示例中,我们看到如下代码: ```javascript function A() { ...

    JavaScript 面向对象编程详细讲解文档

    JavaScript是一种动态类型的脚本语言,虽然它不像Java或C#那样拥有传统的类和实例机制,但它的面向对象编程能力仍然非常强大。JavaScript的核心在于对象、原型和隐式继承,这些都是理解其面向对象特性的重要概念。 ...

Global site tag (gtag.js) - Google Analytics