次のように定義すると:
function getDate() {....}
function getDate(date){....}
その後、後者のメソッドは前のメソッドを上書きしますが、エラーは発生しません報告される。
しかし、jQuery を使用したことがある場合は、実際にオーバーロードを実装できます。たとえば、$("#btn").val() は ID を持つボタンを取得することを理解しているでしょう。 "btn" 値、$("#btn").val("Click Me") は ID が "btn" のボタンに値を割り当てます。
では、JavaScript はどのように実装されるのでしょうか (正確には「シミュレーション」と呼ぶべきです)。
答えは簡単です。引数
引数は JavaScript の組み込みオブジェクトであり、呼び出し元によって渡される実際のパラメーターが含まれますが、呼び出し時に関数宣言で定義されたパラメーター リストに限定されません。 、これは配列と同じです。
当面は「配列」として理解しましょう。配列の長さとその要素の型に基づいてさまざまな実装を選択し、それによってオーバーロードをシミュレートします。
詳細については、次の例を参照してください:
function getDate(){
if(arguments.length==0){
var date=new Date().toLocaleDateString();
return "パラメータが入力されていません。 time:" date;
}
if(arguments.length==1){
if(arguments[0].constructor ==Date){
return "入力したパラメータは Date 型です。現在時刻は次のとおりです: " argument[0].toDateString();
}
if(arguments[0].constructor ==String){
return "入力したパラメータは次のとおりですString 型で、時刻は次のようになります: " argument[0];
}
}
}
したがって、次のように呼び出すことができます:
getDate()
getDate( new Date())
getDate("Monday")
これにより JavaScript のオーバーロードが実現しますが、この「実装」はあまりにも消極的であることがわかりました。パラメーターが多すぎると、膨大な量に見え、随所に if{...} が使用されてコードが乱雑になります。したがって、JavaScript でこのようなオーバーロードを使用することはお勧めしません。