浏览 727 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-12-03 关键字: 函数技术
<script>
//逸云.framework by Neequ
//帮助:将改写函数体,使得同名函数可以同时执行
//func 将之加壳的函数体字符串
//name 函数名
//obj 可选,默认为 window,为应用函数的父对象,多用于事件绑定
function addShell(func,name,obj) {
func=Function(func);
if(!obj) obj=window;
var old = obj[name];
if (typeof obj[name] != 'function') {
obj[name] = func;
}
else {
obj[name] = function() {
var ja=[];
var t = obj[name].arguments;
for(var x=0;x<t.length;x++)
ja.push(t[x]);
old.apply(null,ja);
func.apply(null,ja);
}
}
}
//--测试代码开始--
addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa");
addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa");
addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa");
addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa");
addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa");
addShell('aaa("1111","3333","5555")',"onload");
addShell('aaa("1","3","5")',"onload");
//--测试代码结束--
</script>
----------------------个人签名-------------------------- 搜狐招聘前台技术工程师 条件一:对 javascript 制作技术有足够信心者; 条件二:在北京,能快速面试; 当然最好能了解部分后台技术者,您将可以参与搜狐门户内容部大型网络产品架构与设计。 待遇从优,机不可失,欢迎咨询与推荐! 简历发到 Email: NeequNie@sohu-inc.com,或联系 MSN:Neequ@hotmail.com,联系人,聂先生。 ----------------------个人签名-------------------------- 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-12-04
很佩服lz加壳的精神~~~也就是管道机制的函数~~而且还不支持管道的输入输出~~~~ 而且,参数只能用函数字面量~~~~ 和lz相同效果的代码,适用于AOP js 代码
js 代码
|
|
| 返回顶楼 | |
|
最后更新时间:2007-12-04
晕,你不觉得这样很复杂吗?
如果代码中有大量的这样的同名函数,你的处理逻辑肯定也清晰不到那里去。 个人感觉应该避免这样的同名函数,而不是给它创造条件! 当然了,耍酷眩耀可以! |
|
| 返回顶楼 | |
|
最后更新时间:2007-12-04
这主要是一个应用类型的方法,有这个需求的时候反而更多的时候是需要动态函数,即函数字面量。ajaxgo 你的函数很规范,不错 ^_^
楼上,这个功能很实用,而不是耍酷。例如我要给某一个按钮,在原先的效果基础上,再添加一种动态样式或动态事件,那么就会用到了。另外还可以解决大批量页面合并的时候,接口兼容性的问题,因为现在跨域接口调用都得用JS函数的形式。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-12-04
lZ 写的代码不厚道
<script> //逸云.framework by Neequ //帮助:将改写函数体,使得同名函数可以同时执行 //func 将之加壳的函数体字符串 //name 函数名 //obj 可选,默认为 window,为应用函数的父对象,多用于事件绑定 function addShell(func,name,obj) { func=Function(func); obj= obj || window; var old = obj[name]; var f = (typeof obj[name] != 'function'); f && (obj[name] = func) || f || (obj[name] = function() {old.apply(null,arguments); func.apply(null,arguments);} ) } //--测试代码开始-- addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa"); addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa"); addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa"); addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa"); addShell('alert(arguments[0]+":"+arguments[1]+":"+arguments[2])',"aaa"); addShell('aaa("1111","3333","5555")',"onload"); addShell('aaa("1","3","5")',"onload"); //--测试代码结束-- </script> |
|
| 返回顶楼 | |


