JSでメソッドオーバーロードを実装する方法は?これには3つの問題が含まれます
1.同じ名前の関数を呼び出す問題
2。関数の特別なパラメーター
3.引数を使用してメソッドオーバーロードを実装する方法
1.同じ名前の関数を呼び出す問題
JSに同じ名前の複数の関数がある場合、最後の関数は呼び出し時に毎回使用されることを誰もが知っています。 JSは実際には過負荷ではありません。つまり、同じ名前の複数の関数が定義されている場合、単一のパラメーターは異なります。呼び出すとき、JSはパラメーターの数を気にしませんが、前後の順序のみを気にしません
例えば:
関数test1(arg1){alert( "parameter 1:"+arg1); }関数test1(arg1、arg2、arg3){alert( "parameter 1:"+arg1+"パラメーター2:"+arg2+"パラメーター3:"+arg3); } //テストコード関数test(){test1( "1")}test1( "1")を呼び出し、パラメーターを渡すが、実際の呼び出しはtest1(arg1、arg2、arg3)であり、パラメーターを渡すために1つのパラメーターのみでメソッドを呼び出すことはありません。
2。関数の特別なパラメーター
次のコードを使用する場合
関数test1(arg1、arg2、arg3){alert( "parameter 1:"+arg1+"パラメーター2:"+arg2+"パラメーター3:"+arg3); }関数test1(arg1){alert( "parameter 1:"+arg1); } //テストコード関数test(){test1( "1"、 "2")}呼び出しは常にtest1(arg1)であることを知っています。これは、1つのパラメーターのみを持つ関数ですが、他のパラメーターを渡す方法を意味しますか?
これには、関数引数に特別なパラメーターを使用する必要があります。これには、関数に渡されたすべてのパラメーターが含まれています
関数test1(){var text = ""; for(var i = 0; i <arguments.length; i ++){text+= "parameters"+i+":"+arguments [i]; } alert(text); } // test code function test(){test1( "1"); test1( "1"、 "2"); test1( "1"、 "2"、 "3"); }テスト後、引数には関数に渡されたすべてのパラメーターが含まれていることがわかりました。長さは、渡された実際のパラメーターの数によって異なり、引数。長さは実際に関数パラメーターに渡された数を表します。
3. JSに関数の過負荷を実装する方法は?
上記のテストの後、関数の過負荷をJSで直接実装できないことがわかりましたが、同様の過負荷効果を達成する方法はありますか?
はい、主に引数を使用します
例えば:
関数test1(){var text = ""; if(arguments.length == 1){// 1つのパラメーターのメソッドの呼び出し} else if(arguments.length == 2){// 2つのパラメーターのメソッドを呼び出す} else {//他の方法}}}