2007-07-23
javascript定义类或对象之动态原型方法
关键字: javascript prototype 构造函数在javascrip定义类和对象有很多种方法,但是,对于动态原型方法定义的方式,我还是很陌生的.今天看了js高级程序设计才发现,动态原型方法的基本思想与混合的构造函数/原型方式相同,即在构造函数内定义非函数属性,而函数属性则利用原型属性定义.唯一的区别是赋予对象方法的位置.
下面是用动态原型方法来写Car类:
- function Car(sColor, iDoors, iMpg) {
- this.color = sColor;
- this.doors = iDoors;
- this.mpg = iMpg;
- this.drivers = new Array("Mike", "Sue");
- //注意
- if (typeof Car._initialized == "undefined") {
- Car.prototype.showColor = function() {
- alert( this.color );
- };
- Car._initialized = true;
- }
- }
直到检查typeof Car._initialized 是否等于"undefined" 之前,这个构造函数都未发生变化.这行代码是动态原型方法中最重要的部分.如果这个值未定义,构造函数将用原型方式继续定义对象的方法,然后把Car._initialized设置为true. 如果这个值定义了(它的值为true时, typeof的值为Boolean), 那么就不再创建该方法.简而言之,该方法使用标志来判断是否己给原型赋予了任何方法.该方法只创建并赋值一次,传统的OOP开发者会高兴地发现,这段代码看起来更像其他语言中的类定义了.
呵呵,动态原型方法也是很流行的,在功能上与构造函数/原型方式等价.可以采用这两种方式中的任何一种.不过,需要注意的是,不要单独使用经典的构造函数或原型方式,因为这样会给代码引入问题.(具体问题,在开发中自己发现吧^_^)
- 00:14
- 浏览 (671)
- 评论 (1)
- 分类: Javascript
- 相关推荐
发表评论
- 浏览: 58376 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
谷歌音乐搜索
共 8 张
共 8 张
链接
- 荼蘼泡沫--李小北的博客
- jQuery中文入门教程
- jQuery API 文档
- visualjquery库
- json官方站点
- jQuery插件聚总
- jQuery 中文官方论坛
- Smarty在线手册
- ADODB在线中文手册
- 开源 PHP 开发框架 - FleaPHP
- jQuery中文社区
- flash 上传文件
- Perler
- Python民间组织
- Python的Zope/Phone
- YAML教程
- PyYAML 文档
- phpunit(单元测试)
- jquery menu
- Caja项目
- Caja-wiki
- erlang 中文社区
- Ria技术
- 视觉社区
- Try To Remember
- wind-bell
- lihaiyan
最新评论
-
windowsXP下配置apache+p ...
我按照你的配置不能运行,然后我又加上了以下几句就OK了SetHandler pe ...
-- by chmod777 -
ubuntu +mplayer+ffmpeg+ ...
转换成功了吗。想知道结果。
-- by hanting99 -
javascript定义类或对象之 ...
...
-- by baishou520 -
今日发现
貌似你上学的时候没有学习过数据库这门必修课!!!
-- by xzh_endless -
javascript中setTimeout ...
asdf
-- by wuqi123321






评论排行榜