构建类的方法
Prototype.js
使用Class.create
来构建类Mootools.js
使用new Class
来构建类klass.js
使用klass
来构建类
继承父类的方法
Prototype.js
使用Class.create(ParentClassName,{//子类方法})
构建子类,继承父类,在与父类同名的方法中,第一个参数为$super
,方法体内使用$super(args)
来拓展父类的同名方法Mootools.js
使用new Class
正常构建类后,第一个方法使用Extends:ParentClassName
来继承父类,在子类的方法体中,使用this.parent(args)
来拓展父类的同名方法klass.js
使用ParentClassName.extend(//子类方法)
来继承父类,在子类的方法体中使用this.supr(args)
来拓展父类的同名方法
在类的外面给类添加函数,名称虽然不一样,但调用的方式都一样,
Prototype.js
有addMethods
方法Mootools.js
有implement
方法klass.js
有methods
和implement
方法
单纯以构建类和继承类的方式,个人认为
Mootools.js
做的最好,子类和父类的构建方式统一,子类继承父类时方法清晰,而且在具有面向对象特点的语言,都有extends
关键字,而且父类也是在extends
的后面不习惯
Prototype.js
在每个需要拓展父类的同名方法的第一个参数中加$super
,毕竟Mootools
声明了父类后,在同名方法中只需要加this.parent(args)
,而不用在参数内再加上需要声明父类的强调klass
的构建子类的方法和其他两个都不一样,子类和父类的构建方式就直接加上父类的名字再加上extend
就可以,拓展父类的同名方法的时候,使用this.supr(args)
来拓展。相当想吐槽的就是supr
这个名称了,klass
的源码中到处充满了这种不好好命名的参数,以字母o
,甚至是what
来命名,真是特别的无语了,我会给作者提issue
的
关于源码中具体差异,待续
JS
面向对象系列
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。