总结: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面向对象系列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值