js动态代理
2010-09-14 13:46:37 来源:WEB开发网要拦截函数很简单,以被拦截的函数名和用于拦截的函数为参数
$.intercept = function('objectName.methodName', function(){
//do something
//and invoke the original method if needed
this.__invocation();
})
当然现实中
原本是这样
$('#clickMe2').click(function(){
alert('这是匿名函数,休想跨作用域追捕');
alert($('#content').text());
});
改成这样,就可以照样用 intercept() 插一脚了,虽然原来的代码也需要修改,但是至少它不包含自定义的逻辑
$('#clickMe2').click(function(){
$._('fuck_them_up', function(){
alert('这是匿名函数,休想跨作用域追捕');
alert($('#content').text());
});
});
Demo,看看点intercept me之前和之后点 click me 会有什么不同?
function fuckThemUp(s){
alert(s);
}
$('#clickMe').click(function(){
fuckThemUp($('#content').text());
});
$('#interceptMe').click(function(){
$.intercept('fuckThemUp', function(s){
alert('河蟹来了!');
s = s.replace(/修脚刀/, '水果刀');
s = s.replace(/特殊服务/, '异性洗浴服务');
s = s.replace(/按倒/, '推坐');
this.__invocation__(s);
});
});
$('#clickMe2').click(function(){
$._('fuck_them_up', function(){
alert('这是匿名函数,休想跨作用域追捕');
});
});
$('#interceptMe2').click(function(){
$.intercept('fuck_them_up', function(s){
alert('还不抓到你?');
});
});
赞助商链接