前のセクションでは、JavaScript オブジェクト指向名前空間、JavaScript オブジェクト指向 JavaScript クラス、および JavaScript オブジェクト指向のプライベート メンバーとパブリック メンバー について説明しました。まず上を読んでから、以下を読み続けてください。
次のように定義すると:
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 でこのようなオーバーロードを使用することはお勧めしません。