学习JavaScript有几天了,今天看到JS中的面向对象编程。我们知道在一般的面向对象的编程中方法是可以重载的,通俗得说就是可重载方法的调用是根据形参决定的。比如说一个类中有两个方法(不完整):
cal (a,b) { return a+b;};
cal (a,b,c) { return a*b;};
如果调用第二个带三个参数的方法”cal(1,2,3);”,将返回1乘2的值,而不是1加2。
然而在JavaScript中函数是不支持重载的,如果我们必须要用到重载怎么办呢?这时候就得用到arguments对象了,它可以检测到返回的函数参数个数。我们可以调用它的length属性来做判断从而达到防重载的效果。用法如下:
function returnArgs (){ alert(arguments.length); }
returnArgs("小","强"); //输出2
returnArgs(2009); //输出1
returnArgs(); //输出0
总结一下写一个小程序,下面的脚本代码一定会输出”3|6″从而模仿实现了JavaScript的函数重载:
<script type="text/javascript">
function cal (a,b,c){
if (arguments.length == 2){
return a+b;
}
else if(arguments.length == 3){
return a*b*c;
}
}
document.write (cal(1,2) + " | ");
document.write (cal(1,2,3));
</script>


