实现JS函数的重载
2019-10-25 06:30:43来源:爱站网 阅读 ()
今天小编就将为大家解答如何实现JS函数的重载的内容,对于此问题有很多小伙伴们都还是不了解的,那么接下来的内容中小编就将着重介绍实现JS函数的重载的方法,希望对大家的学习有帮助。
javascript不能支持函数的重载,如下:
<script?language="JavaScript">
function?f(length)
{
????alert("高为:"+length);
}
function?f(length,width)
{
????alert("高为:"+length+",宽为:"+width);
}
</srcipt>
上面那段代码其实是行不通的,因为函数定义时的参数个数和函数调用时的参数个数没有任何关系。?在函数中可以用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,所以定义function(length),后面用f(10,10)调用是没有问题的。所以在上面这段代码中,第二个函数是永远不可能被调用到的,那么,要怎样才能实现像函数重载那样的功能呢?
????那就是在函数定义中用f.arguments.length判断一下调用时传入的参数个数。然后对不同的情况采用不同的处理方式。
如下:
?
?
<script?language="JavaScript">
function?f()
{
????var?len=?arguments.length;
????if(1?==?len)
????{
????????var?length?=?arguments[0];
????????var?width?=?arguments[1];
????????f2(length,width);
????}
????else
????{
????????var?length?=?arguments[0];
????????f1(length);
????}
}
function?f1(length)
{
????alert("高为:"+length);
}
function?f2(length,width)
{
????alert("高为:"+length+",宽为:"+width);
}
</srcipt>
这样,你就可以给函数f()传入一个参数也可以传入两个参数了,比如f(10)和f(10,10);
????个人觉得,这样虽然可以实现重载,但也不是很好用,我们可以根据具体情况在一个函数中实现重载,如果要重载的两个函数相差较大,那就保留两个函数,而如果两个函数的实现基本差不多,那么可以在一个函数中进行判断,处理不同的部分,而不需要像上面那样写成三个函数,如下:
?
?
<script?language="JavaScript">
function?f(length)
{
????var?len=?arguments.length;
????if(1?==?len)
????{
????????var?width?=?arguments[1];
????????alert("高为:"+length+",宽为:"+width);
????}
????else
????{
????????alert("高为:"+length);
????}
}
</srcipt>
上文关于实现JS函数的重载方法就介绍完了,?虽然方法很简单,但是在简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!
原文链接:https://js.aizhan.com/develop/JavaScript/9628.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:加载js文件的小脚本
下一篇:浏览器上实现右键菜单的方法
- js防止表单重复提交实现代码 2020-03-29
- 基于JQuery的多标签实现代码 2020-03-29
- js实现翻页后保持checkbox选中状态的实现方法 2020-03-25
- JavaScript函数表达式详解及实例 2020-03-25
- NiftyCube实现圆角边框的方法 2020-03-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash