JavaScript中的arguments对象暗藏玄机...原来是我傻了?

一、先简单介绍下JavaScript的arguments

JavaScript中的arguments对象是函数执行时创建的对象。通过它,我们可以动态取参数。学过Java的朋友可能知道方法形参类型可以为:  类型... 形参名,例如:

通过...的这种方式,可以传递任意个String类型的对象。

而JavaScript中则可以通过arguments对象来实现Java的...


二、暗藏的玄机????

事情的经过是这样的:此前我为公司封装了一系列的通用函数。其中有一个是checkAll,用来实现全选的。这个函数功能比较简单。一开始时这么定义的:

即当点击全选按钮的时候,把全选的这个复选框的checked值 赋值给其它name为指定的复选框,然后今天看着函数的时候,觉得不是很简洁,打算利用event.srcElement ,然后只传一个name参数就能实现全选,为了兼容以前的代码。于是写出了如下:

一切似乎是这么的美好...但是悲剧发生了。。。。。。。没有效果,于是我一步一步的测试

测试1:

测试2:

百思不得其解....

测试3:

我不相信自己的眼睛。。。于是

测试4:

这个时候。。。我突然想给自己一巴掌...我没有聪明一世,但是却糊涂了...囧

对于这个函数来说obj 与 arguments[0]它们所引用的对象其实是一个,只是不同方式的获取罢了。

那么当checkAll('loves')时,一开始obj与arguments[0] 都是loves   后来通过obj = event.srcElement;后    obj与arguments[0]指向的其实是全选的那个checkbox DOM对象了。

我有点想当然了...囧...囧...囧




为什么发表2次不成功0 0




posted on 2012-04-10 00:17  springside5  阅读(204)  评论(0编辑  收藏  举报