這次帶給大家JavaScript的函數重載詳解,JavaScript的函數重載的注意事項有哪些,以下就是實戰案例,一起來看一下。
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); }; }// 不传参数时,返回所有namefunction find0(){ return this.names; }// 传一个参数时,返回firstName匹配的namefunction find1(firstName){ var result = []; for (var i = 0; i < this.names.length; i++) { if (this.names[i].indexOf(firstName) === 0) { result.push(this.names[i]); } } return result; }// 传两个参数时,返回firstName和lastName都匹配的namefunction find2(firstName, lastName){ var result = []; for (var i = 0; i < this.names.length; i++) { if (this.names[i] === (firstName + " " + lastName)) { result.push(this.names[i]); } } return result; }function Users(){ addMethod(Users.prototype, "find", find0); addMethod(Users.prototype, "find", find1); addMethod(Users.prototype, "find", find2); }var users = new Users(); users.names = ["John Resig", "John Russell", "Dean Tom"];console.log(users.find()); // 输出[ 'John Resig', 'John Russell', 'Dean Tom' ]console.log(users.find("John")); // 输出[ 'John Resig', 'John Russell' ]console.log(users.find("John", "Resig")); // 输出[ 'John Resig' ]console.log(users.find("John", "E", "Resig")); // 输出undefined
我相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
相關閱讀:
以上是JavaScript的函數重載詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!