首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

arguments.callee.caller.arguments[零]

2012-10-24 
arguments.callee.caller.arguments[0]今天在网上看见这种调用,据说是解决火狐下事件或得问题的,var evtw

arguments.callee.caller.arguments[0]

今天在网上看见这种调用,据说是解决火狐下事件或得问题的,var evt=window.event|arguments.callee.caller.arguments[0]

argument.callee就是函数本身,caller函数的调用函数.

?

?

<script type='text/javascript'>
function?myFunc(){
??? alert(arguments.callee.caller.toString())
???var?ev?=?window.event?||?arguments.callee.caller.arguments[0]
??????? ,et?=?ev.srcElement?||?ev.target;
}
</script>

我们把argument.callee.caller的函数体输出,看看到底在ie和ff下有何区别.

可以看到ie下输出为

function?anonymous(){
?? myFunc()
}

ff下输出为

function?onclick(event){
??? myFunc();
}

在html控件中直接注册事件在ie/ff下表现的不同, ie下定义了一个匿名函数,内部再执行用户定制的函数(myFunc),而ff下则有所

不同,首先ff下定义了一个与节点事件同名的函数,这里是onclick事件,所以是function onclick,然后event作为一个参数传入,内部再执行myFunc.

所以当事件触发时,在myFunc里,argument.callee.caller就是指向function onclick,当然,argument.callee.caller.arguments[0]即为event了.

热点排行