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; }