总结:prototype.js,Mootools.js和klass.js 实现类的方法的异同与优劣

构建类的方法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.jsaddMethods方法继承

  • Mootools.jsimplement方法

  • klass.jsmethodsimplement方法

单纯以构建类和继承类的方式,我的认为

  • Mootools.js作的最好,子类和父类的构建方式统一,子类继承父类时方法清晰,并且在具备面向对象特色的语言,都有extends关键字,并且父类也是在extends的后面

  • 不习惯Prototype.js在每一个须要拓展父类的同名方法的第一个参数中加$super,毕竟Mootools声明了父类后,在同名方法中只须要加this.parent(args),而不用在参数内再加上须要声明父类的强调

  • klass的构建子类的方法和其余两个都不同,子类和父类的构建方式就直接加上父类的名字再加上extend就能够,拓展父类的同名方法的时候,使用this.supr(args)来拓展。至关想吐槽的就是supr这个名称了,klass的源码中处处充满了这种很差好命名的参数,以字母o,甚至是what来命名,真是特别的无语了,我会给做者提issue

关于源码中具体差别,待续


JS面向对象系列

相关文章
相关标签/搜索