Javascript玩转Prototype(二)

上文一直在罗嗦GOF的原型模式,在本文中讲开始正式讨论Javascript的Prototype。对于Javascript的初学者来说,Prototype是个蛮高深的话题,其实并不尽然。

我说不尽然,意思是说理解Prototype的一般用法很简单。但是真正能做到融会贯通理解Prototype确实是件很难的事情。

今天我就从Prototype的基本开始讲。上文中我讲了原型模式。其实在Javascript中原型也是这个意思。Javascript中对象的原型属性的解释是:返回对象类型原型的引用。这是一个晕人的解释。其实就是指定了一个需要复制的对象。

文字再多也不如代码,上代码,说最简单的,任何类都继承自Object类:

function A()
{    }
A.prototype=new Object();

其实这样就相当于Object对象是A的一个原型,这样就相当于了把Object对象的属性和方法复制到了A上,和原型模式的精髓一样吧!

好,大概了解了prototype的基本用法,我们来看看原型究竟有什么用处。

最简单的用法,动态扩展类的方法和属性。

function People()
{
 this.Jump=function(){
 alert("I can jump");
}
}

现在要扩充方法:

People.prototype.Run=function(){
 alert("I can run,too");
}

好,测试下:

var p=new People();
p.Jump();
p.Run();

时间: 2024-10-02 09:13:52

Javascript玩转Prototype(二)的相关文章

Javascript玩转Prototype(一)——先谈C#原型模式

在<Javascript玩转继承(二)>中,我使用了原型继承法来实现Javascript的继承,那原型究竟奥秘何在.在这篇文章中,我就主要针对原型来展开讨论. 抛开Javascript,我们先来看我们熟悉的常规的面向对象语言.在23种设计模式中,大家一定会记得有一种设计模式--原型模式.我们先来看一下结构图: (原图引自:http://terrylee.cnblogs.com/archive/2006/01/16/317896.html) 先来复习一下原型模式:看到这个图,大家一定会注意到这个

Javascript玩转继承(二)

在<Javascript玩转继承(一)>中,我主要介绍了对象伪装来实现继承.我们在这里先来说一下这种方式的优缺点. 毋庸置疑,这种方式是比较容易理解的,在子类中调用父类的构造函数.另外,这种方法最大的一个优点就是说构造继承可以实现多继承,复习下这个代码: function A() { } function B() { } function C() { this.father=A; this.father(); delete this.father; this.father=B; this.fa

Javascript玩转继承(三)_javascript技巧

首先,我们来看非主流继承一:实例继承法. 我也不说那么多废话了,既然是非主流继承,就一定不常用,既然不常用还存在,那就只有一个因素,他用于特定的场合.实例继承法,就主要用于核心对象的继承,也是目前为止唯一能够解决核心对象继承的方式. 核心对象的继承拥有一定的价值,比如说Error对象,我们公司可能要自己实现一个Error 类来简化今后的开发,那么这个时候我就要使用实例继承法来继承Error. 代码如下: 复制代码 代码如下: function ExtendingError(mes){    va

JavaScript中的prototype和constructor简明总结

 一直没弄清楚JavaScript中的prototype和constructor属性,今天看了看书,总算有点眉目了 一.constructor constructor的值是一个函数.在JavaScript中,除了null和undefined外的类型的值.数组.函数以及对象,都有一个constructor属性,constructor属性的值是这个值.数组.函数或者对象的构造函数.如:   代码如下:var a = 12, // 数字     b = 'str', // 字符串     c = fa

Javascript面向对象编程(二):构造函数的继承

Javascript面向对象编程(二):构造函数的继承 作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数. function

ASP VBScript + Javascript 以字符串方式二级联显示文件夹

javascript|vbscript|显示|字符串 ASP VBScript + Javascript 以字符串方式二级联显示文件夹 作用: 列出当前设置目录中的子文件夹, 再列出子文件夹的下级文件夹, 当改变一级子文件夹的时候, 动态显示隶属于其的子文件夹. 注: Javascript 以字符串方法判断级联对象, 也就是一级子文件夹的名字. //并且在页面加载的时候以一级子文件夹选择的目标关联显示二级列表框中的内容. shawl.qiu 2006-7-28 ASP VBScript + Ja

JavaScript中String.prototype用法

  本文实例讲述了JavaScript中String.prototype用法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 // 返回字符的长度,一个中文算2个 String.prototype.ChineseLength=function() { return this.replace(/[^x00-xff]/g,"**").len

JavaScript中通过prototype属性共享属性和方法的技巧实例

 这篇文章主要介绍了JavaScript中通过prototype属性共享属性和方法的技巧实例,本文直接给出一个代码实例,需要的朋友可以参考下     具体代码如下:   代码如下: //定义函数 function people(name,sex,age){ this.name = name; this.sex = sex; this.age = age; } //共享isStudent与sayName方法 people.prototype = { isStudent:true, sayName:

JavaScript事件学习小结(二)js事件处理程序_javascript技巧

相关阅读: JavaScript事件学习小结(五)js中事件类型之鼠标事件 http://www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 http://www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员(属性和方法) http://www.jb51.net/article/86262.htm JavaScript事件学习小结(二)js事件处理程序 http://www