ホームページ  >  記事  >  ウェブフロントエンド  >  JS関数のオーバーロード_javascriptスキルの詳細説明

JS関数のオーバーロード_javascriptスキルの詳細説明

WBOY
WBOYオリジナル
2016-05-16 16:29:111590ブラウズ

JS の関数定義では、形式的なパラメータ名を指定できます。多かれ少なかれ、js はさまざまな数のパラメータを使用したメソッドのオーバーロードをサポートできると考えられますが、残念ながら、これは単なる幻想です。引数が渡されると、このパラメータは配列に似ています。関数が呼び出されるとき、すべての実パラメータはこのデータ構造に格納されます。アクセスする方法。言い換えれば、JS のすべての関数は無制限のパラメーターをサポートしており、データ型は弱い型なので、JS 関数には名前以外のメソッドの違いはありません。

JavaScript で特別なオブジェクト引数を使用して関数のオーバーロードをシミュレートする方法は常にあります。これを使用して、オーバーロードを区別するために渡されるパラメーターの数またはタイプを決定します。

1. パラメータの数に応じたオーバーロード

js は、arguments.length 属性を使用して受信パラメータの数を決定できます。

コードをコピーします コードは次のとおりです:
<スクリプトタイプ="text/javascript">
関数 add() {
If (arguments.length == 1) {
アラート(引数[0] 10);
}
else if (arguments.length == 2) {
alert(引数[0] 引数[1]);
}
}
//関数呼び出し
add(10);
add(10, 20);


2. パラメータの型に応じたオーバーロード

変数の型を決定する 3 つの方法:

1. typeof ステートメントを使用して変数の型を決定します。typeof ステートメントは、その型に対応する文字列を返します。
2.instanceof ステートメントを使用して変数の型を決定します。instanceof ステートメントは true/false を返します。
3. コンストラクター属性を使用して変数の型を決定します。この属性は、変数の構築に使用されるコンストラクター参照を返します。
比較表: typeof では特定の型を正確に決定できないことがわかるため、コンストラクターを使用して決定します。

文字列数値オブジェクト関数の型ブール型オブジェクトオブジェクト

コンストラクター 文字列 数値 オブジェクト関数 ブール配列 ユーザー定義

コードをコピーします コードは次のとおりです:
<スクリプトタイプ="text/javascript">
関数 add()
{
(arguments.length == 0) の場合は 0 を返します;
var sum=0;
for(var i=0; i If(arguments[i].constructor == Number){
//または次のように変更します: if(arguments[i]instanceofNumber)
//または次のように変更します: if(typeof(arguments[i])=="number")
sum = 引数[i];
}
}
合計を返します;
}
//関数呼び出し
アラート(追加(10));
アラート(add(10,20));


JavaScript 関数のオーバーロード方法は理解できましたか? ご質問がございましたら、メッセージを残してください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。