最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何实现JS函数的重载_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 20:33:23
文档

如何实现JS函数的重载_javascript技巧

如何实现JS函数的重载_javascript技巧:javascript不能支持函数的重载,如下: 代码如下: function f(length) { alert(高为:+length); } function f(length,width) { alert(高为:+length+,宽为:+width); } 上面那段代码其实是行不通的,因为函数定义时的参数个数和函数
推荐度:
导读如何实现JS函数的重载_javascript技巧:javascript不能支持函数的重载,如下: 代码如下: function f(length) { alert(高为:+length); } function f(length,width) { alert(高为:+length+,宽为:+width); } 上面那段代码其实是行不通的,因为函数定义时的参数个数和函数


javascript不能支持函数的重载,如下:
代码如下:

function f(length)
{
alert("高为:"+length);
}

function f(length,width)
{
alert("高为:"+length+",宽为:"+width);
}


上面那段代码其实是行不通的,因为函数定义时的参数个数和函数调用时的参数个数没有任何关系。 在函数中可以用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,所以定义function(length),后面用f(10,10)调用是没有问题的。所以在上面这段代码中,第二个函数是永远不可能被调用到的,那么,要怎样才能实现像函数重载那样的功能呢?
那就是在函数定义中用f.arguments.length判断一下调用时传入的参数个数。然后对不同的情况采用不同的处理方式。
如下:
代码如下:

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);
}


这样,你就可以给函数f()传入一个参数也可以传入两个参数了,比如f(10)和f(10,10);
个人觉得,这样虽然可以实现重载,但也不是很好用,我们可以根据具体情况在一个函数中实现重载,如果要重载的两个函数相差较大,那就保留两个函数,而如果两个函数的实现基本差不多,那么可以在一个函数中进行判断,处理不同的部分,而不需要像上面那样写成三个函数,如下:
代码如下:

function f(length)
{
var len= arguments.length;
if(1 == len)
{
var width = arguments[1];
alert("高为:"+length+",宽为:"+width);
}
else
{
alert("高为:"+length);
}
}

文档

如何实现JS函数的重载_javascript技巧

如何实现JS函数的重载_javascript技巧:javascript不能支持函数的重载,如下: 代码如下: function f(length) { alert(高为:+length); } function f(length,width) { alert(高为:+length+,宽为:+width); } 上面那段代码其实是行不通的,因为函数定义时的参数个数和函数
推荐度:
标签: 方法 实现 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top