ホームページ  >  記事  >  ウェブフロントエンド  >  JSオブジェクト指向プログラミングでメソッドのオーバーロードを実装する方法_JavaScriptスキル

JSオブジェクト指向プログラミングでメソッドのオーバーロードを実装する方法_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:42:481375ブラウズ

JS でメソッドのオーバーロードを実装するにはどうすればよいですか?これには 3 つの問題が含まれます

1. 同じ名前の関数の呼び出しに関する問題

2. 関数内の特殊パラメータ引数

3. 引数を使用してメソッドのオーバーロードを実装する方法

1. 同じ名前の関数の呼び出しに関する問題

js に同じ名前の関数が複数ある場合、実際には、同じ名前の関数が複数ある場合、js はオーバーロードされないことは誰もが知っています。定義されている、単一のパラメータが異なります。呼び出しの際、js はパラメータの数を考慮せず、順序のみを考慮します。

例:

function test1(arg1) 
{ 
alert("参数1:"+arg1); 
} 
function test1(arg1,arg2,arg3) 
{ 
alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); 

} 
//测试代码 
function test(){ 
test1("1") 
}
test1("1") を呼び出して 1 つのパラメーターを渡しましたが、実際の呼び出しは test1(arg1, arg2, arg3) でした。これは、1 つのパラメーターを渡し、呼び出しに 1 つのパラメーターしかないためではありません。

2. 関数の引数内の特殊パラメータ

次のコードを使用する場合


function test1(arg1,arg2,arg3) 
{ 
alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); 

} 
function test1(arg1) 
{ 
alert("参数1:"+arg1); 
} 
//测试代码 
function test(){ 
test1("1","2") 
}
呼び出しは常に test1(arg1) であり、パラメーターが 1 つだけある関数であることはわかっていますが、他のパラメーターを渡すにはどうすればよいでしょうか?

これには、関数内で特別なパラメータ引数を使用する必要があります。引数には、関数に渡されるすべてのパラメータが含まれます

function test1() 
{ 
var text=""; 
for(var i=0;i<arguments.length;i++){ 
text+="参数"+i+":"+arguments[i]; 
} 
alert(text); 
} 
//测试代码 
function test(){ 
test1("1"); 
test1("1","2"); 
test1("1","2","3"); 
}
テストの結果、引数には関数に渡されるすべてのパラメータが含まれており、arguments.length は、関数に渡されるパラメータの実際の数に応じて変化することがわかりました。

3. js で関数のオーバーロードを実装するにはどうすればよいですか?

上記のテストの結果、関数のオーバーロードは js で直接実装できないことがわかりましたが、同様のオーバーロード効果を実現する方法はありますか?

はい、重要なのは引数を使用することです

例:

function test1() 
{ 
var text=""; 
if(arguments.length==1) 
{ 
//调用一个参数的方法 
} 
else if(arguments.length==2) 
{ 
//调用两个参数的方法 
} 
else { //其他的方法 
} 
}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。