JS实现方法重载重载有什么好方法

本文实例分析了JS重载实现方法重載方法分享给大家供大家参考,具体如下:

重载是面向对象语言里很重要的一个特性JS中没有真正的重载,是模拟出来的(因为js是基于对潒的编程语言不是纯面向对象的,它没有真正的多态:如继承、重载、重写)


  

后来需求改了需要获得20条数据,而getDataTop10又被很多函数调用了整体替换可以但麻烦,这时可以用重载

进而引出什么是重载:函数名相同但是可以区分出来,想用哪个就用哪个而不是后面的同名函數覆盖前面的

arguments:Js里的一个内置对象,包含了调用者传递的实际参数(函数声明时定义的参数个数不影响)


  

当参数很多时要写一大串,遂可以改进


  

洳果参数个数相同类型不同,又该如何


  

“实现方法重载”太勉强如果参数过多,就要很多if语句显得代码很乱

更多关于JavaScript相关内容可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》

希望本文所述对大家JavaScript程序设计有所帮助。

}

        对js有些了解的人都知道在js中根夲就不存在像C#中的那种方法重载,而有的只是方法的覆盖当你在js中敲入两个或多个同名的方法的时候,不管方法(函数)的参数个数怎麼个不同这个方法名只能属于最后定义的那个函数。也就是说后一个方法会把前面同名的方法给覆盖掉

我们看一段下面的代码:


在浏覽器中查看的结果是:你好,我是第三个sayHi方法!

可见最后一个方法已经把前面同名的两个方法覆盖掉了。这就是js中鼎鼎有名的方法覆盖問题

那么在js中难道就不可以实现方法重载方法重载了吗?

我们再来看下面这段代码:


在浏览器中查看时会依次弹出三个消息框调用sayHi方法Φ因参数个数不同而分的这三种不同情况。

       这样看来上面的方法很类似于C#中的方法重载,可以根据传入参数的不同类分别调用属于自己嘚分支

注:不能完全类似于C#众的方法重载,因为没有办法根据传入参数的类型来调用属于自己的重载方法

不过现在的js发展如此之快,幾乎摆脱了之前面向过程的编程进入了面向对象编程相信很快会解决这个问题了。

}

以上通过arguments.length属性可以模拟实现方法重载js方法重载,即通过调用方法是传参个数的不同进行不同的操作

}

我要回帖

更多关于 实现方法重载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信