首页 教程 API文档

移除钩子

2015-10-09 10:34:28

属性


使用频率
所属模型 hooker
成员类型 公有成员函数

描述


unhook方法用于解除hook方法添加的钩子.

语法



Object unhook(Object hooks);
Object unhook(String name);
Object unhook(String name,Function hookFunc);
Object unhook(Array names,Function hookFunc);
        

参数


名称 类型 描述
name String 钩子的名称,可以支持用空格分开的多个名称,如果只有一个name参数,那么所有的该名称的钩子都会被移除.
names Array 包含钩子名称的数组
hookFunc Function 钩子被触发时候执行的函数,必须与添加钩子时候的函数相等
hooks Object 钩子名称与钩子函数对应的Object对象,钩子函数必须是添加钩子时候的函数

返回值


this对象

相关例子



//创建一个模块,使用hooker模型
var module1 = Std.module({
    model:"hooker",
    public:{
        food:function(name){
            if(this.act("eat",name) == false){
                return;
            }
            alert("food name: " + name);
        }
    }
});

//创建模块的实例对象
var instance1 = new module1();

var hookFunc  = function(name){
    if(["shit","maggot"].has(name)){
        console.log(name + " is not food!");
        return false;
    }
}
//添加eat这个钩子
instance1.hook("eat",hookFunc);

//移除刚添加的钩子
instance1.unhook("eat",hookFunc);

//在控制台中尝试一下这段代码,钩子已经没了
instance1.food("shit");