日期:2014-05-16 浏览次数:20369 次
//应用到所有Object类型中
Object.prototype.monitor=monitor;
/*
函数监听,可以监听指定的函数,函数调用前会先调用monitorFun方法,方法返回true则放行,返回其他的则直接将返回数据返回给调用方
funName:要监听的函数名字
monitorFun:回调函数,回调函数会接受到调用方调用的参数数组,在回调中可以修改参数。
*/
function monitor(funName,monitorFun){
//var mCaller=monitor2.caller;
//alert(mCaller);
//var parentObj = (mCaller==null?window:mCaller);
var parentObj = this;
var funTemp = parentObj[funName];
//生成拦截方法
var ljFun=function(){
//调用回调函数 来判断是否放行
var ret = monitorFun(arguments);
//alert(ret+""+(ret==true));
if(ret==true){
//准备生成参数
//声明变量
var evText = "";
//参数格式
var csText = "";
for(var a = 0;a<arguments.length;a++){
evText+="var a"+a + "="+ "arguments["+a+"];"
csText+="a"+a+(a==0?"":",");
}
eval(evText);
return eval("funTemp("+csText+")");
}
return ret;