javascript面向对象编程(四)

作者:canque 来源:CanQue@RSSIDEA 时间:2008-03-07 14:20:00 

阅读上一篇:javascript面向对象编程(三)

继承是面向对象语言中的一个重要概念,现在我们来探讨一下继承。在网上搜一下javascript继承,可以得到无数关于javascript继承的文章。这些文章可能使用了很多让人眼花缭乱的技巧。但是,大多数情况下,其核心思想只有两种:利用prototype来实现继承(prototype继承)和利用复制对象方法来实现继承(class继承?听过的说法,不知是否准确)。先了解下这两种继承是如何实现的,以及它们的区别。

[prototype继承]


 

对prototype基本原理还不清楚的人可以看看这篇文章,虽然是说actionscript,但原理都是一样的。

[复制对象继承]


通过复制temp(对象,newClass的实例)到newClass(新建立的类)上来实现继承。

[prototype继承和复制对象继承区别]
从上面的例子可以看出,这两种方法都实现了继承。但是,它们究竟有什么区别呢?

prototype继承方式:
newClass.prototype->base.prototype->Object.prototype

复制对象继承方式:
base.prototype->Object.prototype
|
| [对象复制]
|
V
newClass.prototype->Object.prototype

下面的代码是prototype继承方式,我们尝试对基类进行修改:

由上面的代码可以看出,由于prototype继承是通过prototype链的指向来完成的,所以改变prototype链上级将实时影响到prototype链的下级。而如果是复制对象的继承方式,由于是将基类复制到新类,所以再改变基类对新类不会有影响。看下面的代码:



关于prototype这个东西,到现在我还没见过有谁敢拍胸脯说自己完全掌握的。本文也没有涉及到prototype比较深刻的地方。借此文抛砖引玉,希望更多的朋友能参与交流,不吝赐教。

标签:面向对象,继承,编程,oop,javascript
0
投稿

猜你喜欢

  • W3C优质网页小贴士(二)

    2008-04-07 12:14:00
  • 详解CSS的优先权

    2008-05-11 18:57:00
  • 网页代码更清晰高效的一些经验

    2008-05-19 12:23:00
  • 页面制作的重要性

    2007-10-30 13:14:00
  • ASP初学者常犯的几个错误

    2007-09-07 10:19:00
  • asp获取软件下载的真实地址!再谈获取Response.redirect重定向的URL!

    2010-03-10 22:03:00
  • CSS浏览器兼容问题整理(IE6.0、IE7.0 与FireFox)

    2008-10-27 13:45:00
  • 也说说语义

    2009-12-29 13:04:00
  • [翻译]标记语言和样式手册 Chapter 4 引用

    2008-01-20 14:19:00
  • XMLHTTPRequest的属性和方法简介

    2007-12-18 18:42:00
  • DateDiff函数在Sql与Access中的区别

    2009-06-04 18:02:00
  • 谈非线性任务流程的窗口打开方式

    2008-08-28 12:47:00
  • Mootools 1.2教程(8)——输入过滤第一部分(数字)

    2008-11-27 13:01:00
  • 编程活动中几个不良现象

    2008-09-01 12:23:00
  • 一个小技巧mysql命令行分页

    2011-01-29 16:33:00
  • ip地址和身份证的js验证代码

    2007-12-29 21:49:00
  • 解析:以mysql_开始的未定义引用错误

    2008-12-19 17:58:00
  • 段正淳的css笔记(5)未知图片垂直居中的方法

    2007-11-01 22:06:00
  • 条件CSS的介绍

    2009-03-13 13:57:00
  • html元素input使用方法

    2007-12-06 13:02:00
  • asp之家 网络编程 m.aspxhome.com