发布于 2015-09-06 14:55:24 | 181 次阅读 | 评论: 0 | 来源: 网络整理

regularjs的类式继承简化自著名的☞ded/klass,

Regular只保留了其中两个接口(细节请看API):

  • extend: 从父组件派生一个可重用组件
  • implement: 扩展当前组件的原型对象

regularjs中的'类'沿承自klass的特点

Component.extend返回的就是一个普通的构造函数, 不过与原始[ded/klass]一样, 此构造函数拥有以下特点

  • 子类构造函数同时也拥有extend, implement方法.
var Component = Regular.extend({
    say: function(){},
    run: function(){}
});
var SubComponent = Component.extend();

SubComponent.implement({
    run: function(){ }
})
  • 在方法中可以通过this.supr()来调用父类的同名函数,避免了使用负担.继续上例.

var ChildComponent = Component.extend({
    say: function(){
        this.supr() // call Component.prototype.say.
        console.log("sub say");  // other logic
    }
})

ChildComponent.implement({
    run: function(){
        this.supr() // call Component.prototype.say
    }    
})

var component = new ChildComponent();
component.run();

Tips :使用exend、implement之外的方式扩展的原型方法无法使用this.supr()

不同点

由于extend同时又是组件定义的接口,所以在extend时,regularjs同时会做一些预处理操作:

  • 预解析传入的template参数. 保证由这个类的模板只会被解析一次.

  • 子类同时拥有component, directive, filter, event函数, 用来扩展组件功能

  • 如果定义时传入了name, 则为此组件注册组件名,使得可以以内嵌组件的形式使用此组件

var Modal = Regular.extend({
    name: 'modal'
})

下一个小节, 我们来看看我们如何来扩展组件的能力:

  • 指令directive
  • 过滤器filter
  • 自定义dom事件
  • 注册内嵌组件
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务