引数の数によって関数の動作を変えるには?
引数の数によって関数の動作を変えるには?
以下に例を出します。
<script type="text/javascript">
function hello(hello){ // 引数が1つ
alert(hello + ', World!');
}
function world(hello, world){ // 引数が2つ
alert(hello + ', ' + world + '!');
}
hello('Hello'); // Hello, World!
world('Hello', 'OKWave'); // Hello, OKWave!
</script>
hello() と world() を1つにまとめて、
引数が1つなら、hello() の処理を
引数が2つなら、world() の処理をさせることは出来ないでしょうか?
イメージとしては、以下のようになります。(実際には動作しません)
<script type="text/javascript">
function helloWorld(hello [, world]){ // 第二引数は省略しても良い
if(!world){ world = 'World'; }
alert(hello + ', ' + world + '!');
}
helloWorld('Hello'); // Hello, World!
helloWorld('Hello', 'OKWave'); // Hello, OKWave!
</script>
目的としては、特定のブラウザで動作しないfunctionを定義して様々なブラウザで使う事です。
例えば、forEach() など。
# 実際に活用するためには、prototypeで拡張するデメリットとかいろいろあると思いますが、興味本位が多分にあるのでそこは多めに見てください…。
forEach - MDC
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Array/ForEach
そういう理由ですので、
helloWorld({ hello:'Hello', world:'World' });
helloWorld(['Hello', 'OKWave']);
というようなオブジェクトや配列を渡す方法は使えません…。
何か良い方法はないものでしょうか?