ホームページ  >  記事  >  ウェブフロントエンド  >  Javascript オブジェクト指向のオーバーロード_js オブジェクト指向

Javascript オブジェクト指向のオーバーロード_js オブジェクト指向

WBOY
WBOYオリジナル
2016-05-16 18:27:37975ブラウズ

次のように定義すると:

コードをコピー コードは次のとおりです:

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 でこのようなオーバーロードを使用することはお勧めしません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。