ホームページ > 記事 > ウェブフロントエンド > 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 中国語 Web サイトの他の関連記事に注目してください。
関連書籍:
以上がJavaScriptにおける関数のオーバーロードについて詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。