javascript实现类似java的继承,单个方法继承
2015-07-22 14:16
756 查看
/** * 继承方法 * @param {Object} _this [要继承的方法所处对象,传空则默认为window] * @param {String} thisName [要继承方法的名称] * @param {Function} child [子方法] */ function extend(_this, thisName, child){ _this = _this || window; var base = _this[thisName]; _this[thisName] = function(){ return extend.callFun(base, _this, child); } } /** * 调用子方法 * @param {Function} base [父方法] * @param {Object} scope [作用域 方法所处对象] * @param {Function} child [子方法] * @return {} [child方法返回什么就返回什么] */ extend.callFun = function(base, scope, child){ return child.apply(scope, arguments.callee.caller.arguments); } /** * 获取父方法,必须在子方法中调用 * @return {Function} */ extend.getParent = function(){ return arguments.callee.caller.caller.arguments[0]; } /** * 调用父方法 * @return {} [父方法返回什么就返回什么] */ extend.execParent = function(){ var tempArgs = arguments.callee.caller.caller.arguments; return tempArgs[0].apply(tempArgs[1], arguments.callee.caller.arguments); } var obj = { a: function(text){ console.log("不存在的操作"); } } function b(text){ switch(text){ case "1": console.log("1号操作"); break; default: extend.execParent(); } } function c(text){ switch(text){ case "2": console.log("2号操作"); break; default: extend.execParent(); } } // 继承a和b extend(obj, "a", b); extend(obj, "a", c); obj.a("1"); // 1号操作 obj.a("2"); // 2号操作 obj.a("3"); // 不存在的操作
项目中有一个方法里写大量的case,想分割开,就写了这个
相关文章推荐
- jsoup 使用总结4--高级用法之 script js 脚本
- jsoup 使用总结3--高级用法之 not
- jsoup 使用总结2--高级用法之 :gt(n)
- jsoup 使用总结1--添加header
- JavaScript权威指南_134_第15章_脚本化文档_15.8-文档和元素的几何形状和滚动-查询元素的几何尺寸
- javascript 获取滚动条高度+常用js页面宽度与高度
- JavaScript 三种绑定事件方式之间的区别
- js中几种实用的跨域方法原理详解【转】
- jsp中上传图片(使用ajaxfileupload)
- js命名规范
- javascript中的事件流,事件处理程序/事件监听器
- js关联数组
- js判断undefined类型
- JavaScript检测上传文件大小的方法
- extjs4 treepanel checkbox 复选框 全选完美解决
- JavaScript动态改变div属性的实现方法
- JSon 的使用
- 关于 CommonJS AMD CMD UMD 规范的差异总结
- js自定义对象.属性 笔记
- 用Js写的贪吃蛇游戏