ホームページ > 記事 > ウェブフロントエンド > JSオブジェクト指向プログラミングでメソッドのオーバーロードを実装する方法_JavaScriptスキル
JS でメソッドのオーバーロードを実装するにはどうすればよいですか?これには 3 つの問題が含まれます
1. 同じ名前の関数の呼び出しに関する問題
2. 関数内の特殊パラメータ引数
3. 引数を使用してメソッドのオーバーロードを実装する方法
1. 同じ名前の関数の呼び出しに関する問題
js に同じ名前の関数が複数ある場合、実際には、同じ名前の関数が複数ある場合、js はオーバーロードされないことは誰もが知っています。定義されている、単一のパラメータが異なります。呼び出しの際、js はパラメータの数を考慮せず、順序のみを考慮します。
例:
function test1(arg1) { alert("参数1:"+arg1); } function test1(arg1,arg2,arg3) { alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); } //测试代码 function test(){ test1("1") }
2. 関数の引数内の特殊パラメータ
次のコードを使用する場合
function test1(arg1,arg2,arg3) { alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); } function test1(arg1) { alert("参数1:"+arg1); } //测试代码 function test(){ test1("1","2") }
これには、関数内で特別なパラメータ引数を使用する必要があります。引数には、関数に渡されるすべてのパラメータが含まれます
function test1() { var text=""; for(var i=0;i<arguments.length;i++){ text+="参数"+i+":"+arguments[i]; } alert(text); } //测试代码 function test(){ test1("1"); test1("1","2"); test1("1","2","3"); }
3. js で関数のオーバーロードを実装するにはどうすればよいですか?
上記のテストの結果、関数のオーバーロードは js で直接実装できないことがわかりましたが、同様のオーバーロード効果を実現する方法はありますか?はい、重要なのは引数を使用することです
例:
function test1() { var text=""; if(arguments.length==1) { //调用一个参数的方法 } else if(arguments.length==2) { //调用两个参数的方法 } else { //其他的方法 } }