确实没有想到,第一次写一篇文章居然会上CSDN的头条,可能最主要的还是来自于hax那篇比较深刻的评论吧。我非常欣赏hax的才气,所以对于他的评论全盘照收,至于有些网友不是很满意他评论的风格,这个因人而异,我个人也就不做太多的评论.
|
再论面向对象的 Javascript 编程
——对于原文《面向。。。》的补充
作者:蓝翼
联系方式: liuruhong@263.net
关键字:Javascript OOP 面向对象 Jscript 原型 prototype
提要:
在原先《面向对象的JavaScript编程》中,笔者提出了通过Javascript(确切意义上面来说是Microsoft的Jscript)来实现OOP的思想,原文中因为笔者知识的局限,存在一些没有理清楚的思路,感谢一些网友提供的评论,结合这段时间的实际工作,笔者修正了原文中的一些想法.
因为个人知识水平有限的原因,以下所提到的JavaScript仅仅止于Microsoft 的Jscript,至于和NetScape之间的一些不同,也仅止于笔者所知道的范围。在原文中笔者提出了面向对象的JavaScript的概念,不是希望在卖弄Script的技巧,只是觉得在开发的过程中或多或少的会用到,因此从个人的角度提出一些相对可行性的建议。
原文对于Javascript提出了实现,封装,继承,重载,事件等等各个概念,因为个人理解的偏差,原文中有许多地方不甚贴切之处,因此本文只是对于原文的一些个人看法的一些修正。
Javascript从OOP的角度来说,应该不是一门纯OOP的语言,更加准确来说,是一门Object-Based的脚本语言,因此原文提到的所谓类的概念,只是从传统OOP语言的角度去描述的,而所谓的类实现,应该是一种原型实现方式,因为在整个实现的过程中prototype是一个最重要的体现。
理论上来说,所有的function都是object,因此类的创建可以完全基于Object来实现的,原文采用function只是为了更好的实现一些功能,以下就实现,封装,继承,重载,事件这5个概念作一些具体的阐述。
1. 实现。
Javascript的function是一等公民(hax原语),因此采用function来实现是最好的方式,至于采用如下两段代码来实现这个就是根据个人编程的习惯来决定,而一些实现的偏差我会在下文详细的描述。