【 以下文字转载自 Java 讨论区 】
发信人: Dieken (风催草低 - 明月何尝不照人), 信区: Java
标 题: prototype, mootools, dojo, yui, echo 3 的类继承实现的比较
发信站: 水木社区 (Thu Apr 22 15:57:57 2010), 站内
看了下,大多数流行 js 库都是用的 shared prototype 技巧,把扩展
的属性加到子类的 prototype 里。
比较结果: // 广告。。。。Echo 3 Core.js 很不错
代码见附件。
=================================================================
jQuery.extend() 不算类继承。
实现复杂度: mootools > prototype > Dojo > YUI 3 > Echo 3 > YUI 2
实现特性丰富度: Echo 3 > mootools > Dojo > prototype > YUI 3 > YUI 2
(mootools 源码太复杂,看不懂,prototype, dojo 也比较复杂,因此特性丰富程度不是很清楚)
实现干扰程度: Mootools > Prototype > Dojo, Echo 3 > YUI 3, YUI 2
基类属性个数 子类属性个数
Mootools 14 15
$family implement prototype constructor extend create run pass bind bindWithEvent attempt delay periodical protect
$family implement prototype constructor extend create run pass bind bindWithEvent attempt delay periodical protect parent
YUI 2 1 2
prototype
prototype superclass
YUI 3 1 2
prototype
prototype superclass
Dojo 4 4
_meta superclass extend prototype
_meta superclass extend prototype
Echo 3 3 3 (还有 $abstract,代码没演示)
$virtual $super prototype
$virtual $super prototype
Prototype 12 12
addMethods superclass subclasses prototype argumentNames bind bindAsEventListener curry delay defer wrap methodize
addMethods superclass subclasses prototype argumentNames bind bindAsEventListener curry delay defer wrap methodize
【 在 withinsea (沐海~魔導奏器|歌の琴フォルテール) 的大作中提到: 】
: 标 题: Re: JavaScript 里模拟“类”真悲哀 (转载)
: 发信站: 水木社区 (Wed Apr 21 09:49:43 2010), 站内
:
: 根本没继承
: 创建类的时候拷贝了父类成员而已
: 结果就是原型变了的话子类没反应
:
: 大多数js库都不是这么干的
:
: 【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: : 实现还是用原型,只是模拟类继承的语义,没理解错的现在流行的js库都是如此,模拟的语法不同而已。
:
:
: --
:
※ 修改:·Dieken 于 Apr 22 15:59:01 2010 修改本文·[FROM: 211.157.41.*]
: ※ 来源:·水木社区 newsmth.net·[FROM: 125.33.196.3]
--
修改:Dieken FROM 211.157.41.*
FROM 211.157.41.*
附件(247KB) js-oo.tar.gz