《悟透javascript》摘抄1.2--Caller

来源:互联网 发布:学而时之 不亦说乎 编辑:程序博客网 时间:2024/04/29 06:22

函数自身有个caller属性,便是调用当前函数的上层函数;看以下代码:

<script>   function WhoCallMe(){       alert("My caller is "+WhoCallMe.caller);   };   function CallerA(){       WhoCallMe();   }   function CallerB(){       WhoCallMe();   }   alert(WhoCallMe.caller);   WhoCallMe();   CallerA();</script>

alert(WhoCallMe.caller);输出的是:null
WhoCallMe();输出的是:my caller is null;
CallerA();输出的是:function CallerB(){
WhoCallMe();
};

解析:

如果函数的caller是null,函数未调用或全局调用;
可以看出其实caller是动态变化的。由null变化为调用函数,然后在恢复;
注:目前chrom/firefox/opera均支持。(原书中写明opera不支持caller属性,截止写这篇文章时,已经可以使用)

原创粉丝点击