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