javascript 自己主动绑定JS callback 的方法函数
2016-01-18 14:20
549 查看
自己写的一个javascript 智能绑定callback 而且调用运行的函数。主要用于异步请求的 ajax中:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <script> /** * @author default7@zbphp.com * @date 2014-10-17 * @description 通过传入的參数获取出函数名称 * @param args * @returns {string} */ function getFunctionName(args) { var fName = ''; if (typeof args == 'string' && /^[a-zA-Z0-9]+$/.test(args)) { fName = args; } else { var fBody = ''; if (typeof args == 'object' && args.callee) { fBody = args.callee.toString(); } else if (typeof args == 'string') { fBody = args; } if (fBody) { var m = fBody.match(/function\s+([a-zA-Z0-9]+)\s*\(/i); if (m && m[1]) { fName = m[1]; } } } return fName; } var gCallback = []; function addCallback(fName, callback) { if (typeof fName == 'string' && typeof window[fName] == 'function' && typeof callback == 'function') { if (typeof gCallback[fName] == 'undefined') { gCallback[fName] = []; } gCallback[fName].push(callback); } } /** * @description 运行绑定的函数 * @param args */ function execCallback(args) { var fName = getFunctionName(args); if (fName && window[fName] && gCallback[fName]) { for (var i in gCallback[fName]) { gCallback[fName][i](); } gCallback[fName] = [];//仅仅调用一次 } } </script> <script> function a() { alert('a'); } function b() { alert('b'); } function c() { alert('c'); } function d() { alert('d'); } function initUser() { execCallback(arguments); } addCallback('initUser', a); addCallback('initUser', b); addCallback('initUser', c); initUser(); addCallback('initUser', d); initUser(); </script> </body> </html>
相关文章推荐
- javascript中0级DOM和2级DOM事件模型浅析
- 理解js中的闭包
- 关于js单线程的问题
- JS 一定要放在 Body 的最底部么?聊聊浏览器的渲染机制
- [JS脚本]ajax status 错误定义
- JavaScript 自调用匿名函数
- 【翻译】Sencha Ext JS 5公布
- JavaScript获取页面宽度高度
- JVM分析工具链(三) - jstat和hprof
- [JSOI2008]球形空间产生器 (高斯消元)
- 现在流行什么 JS库/框架?
- 手机浏览器javascript事件及css总结
- javascript实现div的显示和隐藏
- json2form已改名为AForm
- json2.js的初步学习与了解
- JVM分析工具链(一) - jps和jstack
- doT js模板入门
- JsRender实用教程(tag else使用、循环嵌套访问父级数据)
- js在jsp页面或当独的js文件中获取项目路径
- 作业:马赛克式图片轮转