이번에는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!