转自
基于原型的hook实现:
[bool]hook:params{realFunc[String|must]:用于保存原始函数的函数名称,用于unHook;hookFunc[Function|must]:替换的hook函数;context[Object|opt]:目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1methodName[String|opt]:匿名函数需显式传入目标函数名eg:this.Begin = function(){....};
}
[bool]unhook:params{realFunc[String|must]:用于保存原始函数的函数名称,用于unHook;funcName[String|must]:被Hook的函数名称context[Object|opt]:目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
}
相对于原博文,将需要hook的方法“改名备份”时加了前缀,支持在一个页面上多个function的hook,而不会错乱。