4.js中如何实现重载

在小项目中对于JavaScript使用,只要写几个function就行了。但在大型项目中,尤其是在开发追求 良好的用户体验的网站中,如SNS,就会 用到大量的JavaScrpt,有时JavaScript的工作量胜过了C#,这时写一堆function,就会显得很乱,杂乱无章,甚至会出现命名冲突,管理和维 护起来都很麻烦。对于这种情况我们就需要使用面向对象的思想来开发JavaScript。
在面向对象语言里重载是很重要的一个特性,而JavaScript这个自称面向对象的语言竟然没有直接提供重载的功能。

假如 这样定义:

function getDate(){ ... };
funciton getDate(data){ ... };

后一个函数将会将前一个函数覆盖掉

但是我们确实是可以实现重载的,例如jQuery :
比如$("#btn").val() 是获取id为"btn"的按钮的value值,而$("#btn").val("点我")则是给id为"btn"的按钮赋值。

那么javaScritpt如何实现重载呢?

就是利用:arguments

arguments是JavaScript里的一个内置对象,包含了调用者传递的实际参数,但不局限于函数声明所定义的参数列表,而调用时只它和数组一样有个length属性。

请看示例:

function Obj (){
    if(arguments.length == 1) {
         console.log("一个参数的函数");
        }else if(arguments.length == 2){
         console.log("两个参数的函数");
    }
}   
Obj(10);          //一个参数的函数
Obj(10,20);     //两个参数的函数

Js 不会验证传递给函数的参数个数是否和函数定义的参数的个数相同,开发人员定义的函数都可以接受任意个数的参数(根据NetScript 文档,最多能接受25个) ,而不会引发错误,任何遗漏的参数都会用undefined 代替,多余的参数被将忽略。

你可能感兴趣的:(4.js中如何实现重载)