总结:prototype.js,Mootools.js和klass.js 完成类的要领的异同与好坏

构建类的要领

  • 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.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面向对象系列

    原文作者:catchonme
    原文地址: https://segmentfault.com/a/1190000010434395
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞