构建类的方法javascript
Prototype.js
使用Class.create
来构建类java
Mootools.js
使用new Class
来构建类segmentfault
klass.js
使用klass
来构建类函数
继承父类的方法this
Prototype.js
使用Class.create(ParentClassName,{//子类方法})
构建子类,继承父类,在与父类同名的方法中,第一个参数为$super
,方法体内使用$super(args)
来拓展父类的同名方法prototype
Mootools.js
使用new Class
正常构建类后,第一个方法使用Extends:ParentClassName
来继承父类,在子类的方法体中,使用this.parent(args)
来拓展父类的同名方法设计
klass.js
使用ParentClassName.extend(//子类方法)
来继承父类,在子类的方法体中使用this.supr(args)
来拓展父类的同名方法code
在类的外面给类添加函数,名称虽然不同,但调用的方式都同样,对象
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
面向对象系列