Javascript には他のプログラミング言語のような関数シグネチャがありません (関数シグネチャとは何ですか? 簡単に言うと、関数が受け入れるパラメータの型とパラメータの数を指します。戻り値の型も含めるべきだと考える人もいます)具体的なコンセプトはオンラインで確認できます。
JavaScript では、他の言語のように、同じメソッド名と異なる数のパラメーターを使用してオーバーロードを実装することはできません。信じられない場合は、次のことを試してみてください。
function show(){
alert ("1 ");
}
function show(num1){
alert(num1);
}
window.onload=function(){
Show( );
show(2);
}
ブレークポイントのデバッグでは、パラメーターのない show メソッドは実行されず、show(num1) メソッドによって上書きされます。
つまり、「オーバーロード」は Javascript では実装できないのでしょうか?答えは「はい」です、それは単なる別の方法です。はい、引数を使用するだけです。
では、引数とは何でしょうか?これは JS の特別な属性であり、配列のような添字インデックスを通じてパラメーターの値を取得し (配列ではありません)、長さを通じてパラメーターの数を取得できます。
function showParamsCount(){
アラート("parameters Number: " argument.length);//出力: パラメーターの数: 4
alert("添え字インデックス 3 のパラメーター:" argument[3]);//出力: 添え字インデックス 3 のパラメーター :Hello
}
} window.onload=function(){
showParamsCount("Hello",4,5,"Hello");
}
もう 1 つ知っておくべきことは、JS の関数の名前付きパラメーターは必要ないため、呼び出し時に渡されるパラメーターの数を知りたい場合は、引数を介してパラメーターを取得する必要があることです。
以下は単純なメソッドのオーバーロードです:
function showMessage(){
if (arguments.length==1){
alter(arguments[0]); ; showMessage("Hi!");
showMessage ("Zhang San","Hi your Sister");
}
このようにして、JS のオーバーロードが実現されます。
『Advanced Programming in JS』という本を読んでいると、引数の値が対応する名前付きパラメータの値と常に同期していることがわかりました。これまでこの問題に気付かなかったのです。
コードをコピー
コードは次のとおりです:
function showMessage(name,msg){
argument[1]="msg の値を変更できます";
alert(name "Say:" msg);//出力: Zhang San Say: msg
}
Window.onload=function(){
showMessage("Zhang San","Hi your Sister"); の値を変更できます。 >
これで、JS の「オーバーロード」に関する基本的な知識はすべて終わりました