caller作为function的一个非常重要的属性,在很多情况下都会用到,下面是caller的一个应用场景,应该能很好的说明caller的用途.
大家都知道在IE和Firefox下获取Event的差异很大,可以通过caller来解决这个问题.
function getEvent(){
if(window.event) {return window.event;}
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor ==MouseEvent
|| arg0.constructor==KeyboardEvent)
||(typeof(arg0)=="object" && arg0.preventDefault
&& arg0.stopPropagation)){
return arg0;
}
}
func=func.caller;
}
return null;
}