使用频率 | 低 |
所属模块 | Std.hooker |
成员类型 | 静态成员函数 |
Std.hooker.hijack是一个函数劫持的方法,该函数可以改变一个函数的本身,让函数执行一些附加的代码,或者是改变这个函数本来的参数值.
给函数增加的代码中,如果拥有返回值,那么这个返回值将会作为这个函数本身的返回值.
如果使用Std.hooker.hijack时候是使用的2个参数,会返回新的函数,如果使用的3个参数,那么那个函数的本身将会被改变,通常情况下建议使用第二种方法.
Function Std.hooker.hijack(Function realFunc,Function addonFunc);
Function Std.hooker.hijack((Object,Function) target,String methodName,Function addonFunc);
名称 | 类型 | 描述 |
realFunc | Function | 需要劫持的函数本身 |
addonFunc | Function | 附加代码的函数,该函数包含一个实参,这个实参是一个包含realFunc参数的数组,如果数组中的值被改变,那么realFunc的参数值也会随之改变. |
target | Function,Object | 目标模块对象,如果指定了该参数,那么将会直接替换该对象下面指定名称的函数 |
methodName | String | 目标模块下的函数名称,该函数将会被劫持替换 |
//劫持alert函数
Std.hooker.hijack(window,"alert",function(args){
console.log("alert: " + args[0]);
});
//当执行alert时候,会先在控制台输出其文本内容
alert("simple text");
var data = {
func1:function(){
console.log("hello");
}
};
Std.hooker.hijack(data,"func1",function(){
console.log("func1 has been hijacked!");
return true;
});
//当执行data.func1的时候将会输出 "func1 has been hijacked!" 然后输出 "hello",返回值为true
data.func1();