首页 教程 API文档

联合模块创建器

2015-09-10 15:51:41

属性


使用频率
成员类型 静态函数

描述


Std.unite 根据常规模块创建一个联合模块,联合模块帮助管理所有的对应模块实例,一旦联合模块被创建,会拥有所有对应常规模块的所有成员函数.

而通过Std.unite 创建出来的联合模块,称为united模块,而new united之后的对象,这里称为 united instance,联合模块实例.

在某些情况下,可以简化一些批量操作

例如:Std.dom.united , Std.animation.keyframe.united

当联合模块实例在执行某一个函数的时候,其包含的所有模块实例都会执行这个函数,联合模块实例函数不会有返回值,始终都返回this对象.

成员列表


方法名称 成员类型 描述
::methods static 联合模块实例对象的模块方法
::addMember static 添加联合模块的原型方法

控制函数


联合模块实例默认有一个控制函数,这个控制函数的名称就是 "_" ,下划线,该函数还可以像控制数组一样的控制联合模块实例.

_ 下划线支持的方法可以参见 Std.unite.methods


//添加一个常规模块实例对象到united实例里
unitedInstance._(Object instance);

//添加多个常规模块实例对象到united实例里,参数为数组
unitedInstance._(Array instances);

//获取索引号为index的常规模块实例
unitedInstance._(Number index);

//获取索引号为index的常规模块实例
unitedInstance[Number index];

//像操控数组一样控制united实例元素
unitedInstance._(String methodName,arg1,arg2,............);
        

支持的方法有

名称 描述
clear 清空所有包含的常规模块实例,使用方法如 unitedInstance._("clear");
push 在united实例中增加一个新的常规模块实例
splice 删除从 index 处开始的零个或多个元素,参考数组的splice方法,使用方法例如 unitedInstance._("splice",2,1)
indexOf 获取指定常规模块实例的index索引位置
has 判断是否已经存在指定的常规模块实例
remove 将对应index索引号的常规模块实例从united实例中移除
merge 将另一个united实例对象或者一个数组合并到当前的united实例对象中
each 遍历united所有常规模块实例元素

另外,联合模块实例还有一个each方法,该方法用于遍历united对象下的所有模块实例元素,使用方法参考Std.each与数组each成员.

语法



Object Std.unite(Object module,Function mainFunc);
Object Std.unite(Object module,Function mainFunc,Object publicMembers);
        

参数


名称 类型 描述
module Object 指定的模块对象
mainFunc Function 联合模块的主函数
publicMembers Object 需要额外增加的公有成员函数

返回值


创建之后的联合模块

相关例子



//创建一个模块
var module1 = Std.module({
    public:{
        func1:function(){
            console.log("number:" + this.n);
        }
    },
    main:function(n){
        this.n = n;
    }
});
//根据上面的模块创建一个united模块
var unitedModule1  = Std.unite(module1);

//创建一个united实例
var unitedInstance = new unitedModule1;

//在united实例里面加入2个新实例
unitedInstance._([new module1(1), new module1(2)]);

//在united实例里面加入1个新实例
unitedInstance._(new module1(3));

//删除索引为2的实例
unitedInstance._("remove",2);

//清空united
unitedInstance._("clear");