重载JavaScript,重载运算符

为JavaScript添加重载函数的辅助方法

JavaScript的重载函数,一般是靠对arguments判断来操作的。

伊州网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联公司于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

比如:

复制代码

代码如下:

var

afunc

=

function()

{

args

=

arguments;

if(args.length

==

1)

{

console.log(1);

}else

if(args.length

==

2)

{

console.log(2);

}else

if

(args.length

==

3)

{

console.log(3);

}

}

可以想象如果重载数量多的时候,要有多少的if-else判断啊(事实上重载数量应该不会太多吧)。

如果要对js函数进行重载,代码量肯定是多的。那么能不能想办法使代码清晰点,再减少那些相同代码的书写呢?

这就是我写篇文章和相关代码的起因了。

惯例先上代码:

复制代码

代码如下:

/**

KOverLoad

一个创建重载函数的辅助方法。

其实这个方法只是帮忙整理了参数不同的情况下的重载方法。

如果还要对参数类型进行判断重载的话,请在提供的方法中自己实现。

@Author

ake

2010-05-02

@weblog

*/

var

KOverLoad

=

function(scope)

{

this.scope

=

scope

||

window;

//默认添加方法到这个对象中。同时添加的方法的this指向该对象。

this.list

=

{};

//存放重载函数的地方。

return

this;

};

KOverLoad.prototype

=

{

//添加一个重载的方法。

//@param

argFunction

重载的方法。

add:function(arg)

{

if(typeof

arg

==

"function")

{

this.list[arg.length]

=

arg;

//以参数数量做标识存储重载方法。很显然如果你的重载方法参数数量

}

return

this;

},

//添加完所有的重载函数以后,调用该方法来创建重载函数。

//@param

fcString

重载函数的方法名。

load:function(fc)

{

var

self

=

this,

args,

len;

this.scope[fc]

=

function()

{

//将指定作用域的指定方法

设为重载函数。

args

=

Array.prototype.slice.call(arguments,

0);

//将参数转换为数组。

len

=

args.length;

if(self.list[len])

{

//根据参数数量调用符合的重载方法。

self.list[len].apply(self.scope,

args);

//这里指定了作用域和参数。

}else{

throw

new

Error("undefined

overload

type");

}

}

}

};

使用

方法是我觉得比较清晰的方法:

//这是可选的作用对象。

复制代码

代码如下:

var

s

=function(){}

s.prototype

=

{

init:function()

{

console.log();

}

}

//构造函数的参数可以是Object类型的或者其他合法的类型,如果不指定,则注册到window对象中,并且作用域也是window。其实就是添加该重载方法到什么地方而已。

复制代码

代码如下:

new

KOverLoad(s.prototype).add(function(a)

{

console.log("one",a,this)

})

 .add(function(a,b)

{

console.log("two",a,b,this)

})

 .add(function(a,b,c)

{

console.log("three",a,b,c,this)

})

 .add(function(a,b,c,d)

{

console.log("four",a,b,c,d,this)

})

 .load("func");

//在这里的参数就是要创建的重载函数的方法名称。

完成以上操作以后,s.func就是一个重载函数。

我们可以这样调用重载函数:

复制代码

代码如下:

var

t

=

new

s();

t.func();//抛出错误异常。因为没有指定零参数时的函数

t.func(”o”);//one

o

Object

{}

t.func(1,2);//two

1

2

Object

{}

简单的代码而已,如果各位有建议或者意见,欢迎留言指教。

javascript函数能重载吗?

当然可以,你可以试一下的。有匿名函数的概念。

javascript

的函数你也可以把它当成一个变量来理解的

比如

function

a(){}

相当于定义了一个变量

var

a

=

function(){}

jequery或者javascript实现部分页面重载

局部刷新和你理解的不太一样,局部刷新会用到AJAX,js会通过一个特殊的对象异步的向服务器发起请求,等到服务器返回后,js根据返回的结果去更新页面的某个部分。

举个例子吧,假如你写了一个生成表格的ashx,这样就可以在前台去请求这个ashx,

$.get("test.ashx", {}, function(responseText)

{

//假如test.ashx返回的是一段html代码

$("#div").html(responseText);

});

这样就可以无刷新的更新某个div了。

关于这方面的内容你可以查阅下AJAX(已经火了很久了哈)的相关资料。

javascript怎么实现函数的重载

你好,Javascript 的函数的参数可以有多个,但你在使用的时候可以不传入齐全的参数 这样就可以了比如function test(a1,a2){if(a1!=null){alert('a1');}else if(a2!=null){alert('a1 and a2');}else{alert('no argument');}}使用的时候你可以用 test('a1'); test('a1','a2');

如何在javascript中实现类似java中的重载 ,最好给段代码。

js的重写很简单,只要重新写下这个方法就好了

如下

function aaa()

{

alert("aaa");

}

aaa = function()

{ alert("bbb");}


标题名称:重载JavaScript,重载运算符
网页URL:http://scyanting.com/article/dsdsdpd.html