javascript 函数重载另一种实现办法
2015-12-24 17:21
671 查看
最近在读javascript忍者 感受下jquery作者 john Resig对于js的独到见解。
先上代码:
先上代码:
function addMethod(object,name,fn){ var old = object[name]; //保存原有的函数,因为调用的时候可能不匹配传入参数的个数 object[name] = function(){ //创建一个新匿名函数作为新方法 if(fn.length == arguments.length){ //如果该匿名函数的形参个数和实参个数匹配,就调用该函数 return fn.apply(this,arguments); } else if(typeof old == 'function'){ //如果不匹配,则调用原有函数 return old.apply(this,arguments); }; } } var ninjas = {values:["dean Edwards","sam Stephenson", "Alex Russell"]}; addMethod(ninjas,"find",function(){ return this.values; }); addMethod(ninjas,"find",function(name){ var ret = []; for(var i=0; i<this.values.length;i++){ if(this.values[i].indexOf(name) == 0){ ret.push(this.values[i]); } } return ret; }) addMethod(ninjas,"find",function(fname,lname){ var ret = []; for(var i=0;i<this.values.length;i++){ if(this.values[i] == fname + ' ' + lname){ ret.push(this.values[i]); } } return ret; }) console.log(ninjas.find()); console.log(ninjas.find("Alex")); console.log(ninjas.find("dean","Edwards"));
相关文章推荐
- JavaScript的编码规范
- 生成JSON数据对象
- Jsoup数据抓取
- Angular.js入门的样例
- bootstarp modal自己主动调整宽度的JS代码
- JavaScript原型继承添加方法属性
- js 拷贝clone
- JS刷新页面总和!多种JS刷新页面代码!
- js遍历json数组
- 网页运行js代码
- js变量作用域
- isArray()函数(JavaScript中对象类型判断的几种方法)
- json2的基本用法
- javascript/JS常用正则表达式
- JSON 和 JSONP 两兄弟
- js sleep效果
- js中substring和substr的用法
- JaveScript RegExp的用法
- JavaScript求最大数最小数
- js获取当前url信息