多くの高級オブジェクト指向言語には、メソッドのオーバーロードがあります。また、JavaScript にはメソッドのオーバーロードという概念がありません。ただし、arguments パラメーターを使用して、それを関数
のオーバーロードとして偽装することができます。
シミュレーションする前にコードを見てみましょう:
//表面上で仮パラメータを宣言しない関数
関数 fun() {
alert("サンプルコード");
}
fun("Xiao Ming", 100, true);//実際のパラメータを 3 つ書きました
結果から、関数宣言時に仮パラメータを定義しなくても、メソッド呼び出し時に実パラメータを記述できることがわかります。 (実際には、仮パラメータはプログラマが関数を呼び出すときに確認できるように書かれています)
コード内の実際のパラメータを取得できますか?答えは「はい」です。コードを参照してください:
//表面上で仮パラメータを宣言しない関数
関数 fun() {
alert(arguments[0]);//最初の実パラメータの値を取得します。
alert(arguments[1]);//2 番目の実パラメータの値を取得します。
alert(arguments[2]);//3 番目の実パラメータの値を取得します。
alert(arguments.length);//実際のパラメータ数を取得します。
alert("サンプルコード");
}
fun("Xiao Ming", 100, true);//実際のパラメータを 3 つ書きました
コードを通して、引数 (内部プロパティ) 自体が配列であり、その機能がメソッドの実際のパラメーターを格納することであることがわかります。
上記の知識ポイントにより、シミュレーション方法をオーバーロードするためのアイデアが得られます。実際のパラメータの数に基づいて判断して、さまざまなロジックコードを実行できます。簡単なコードは次のとおりです:
関数 fun() {
if (arguments.length == 0) {
alert("実際のパラメータなしでコードを実行");
}
else if(arguments.length==1)
{
alert("実際のパラメータで渡されたコードを実行します");
}
else if(arguments.length==2)
{
alert("2 つの実際のパラメータで渡されたコードを実行します");
}
}
楽しい();
fun("シャオミン");
fun("シャオミン", "シャオファ");