這兩個的解釋在網上都比較多,但網上一些排版實在讓人難受,所以這裡用通俗簡單的句子再談談。
- arguments.callee 也就是當前函數。
- 函數.caller 也就是調用當前函數的函數。
舉例
function F1()
{
alert(arguments.callee); //和下面一句的結果相同
alert(F1); //顯示函數 F1 的代碼
}
F1();
function F2()
{
alert(arguments.callee.caller); //和下面一句的結果相同
alert(F2.caller); //如果被 F3 調用,則顯示函數 F3 的代碼
alert(F3); //顯示函數 F3 的代碼
}
function F3()
{
F2();
}
F3();
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="zh-cn" />
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>arguments.callee 與 函數.caller</title>
</head>
<body>
<script language="javascript" type="text/javascript">
<!--
//千一網路 http://www.cftea.com/
function F1()
{
alert(arguments.callee); //和下面一句的結果相同
alert(F1); //顯示函數 F1 的代碼
}
F1();
function F2()
{
alert(arguments.callee.caller); //和下面一句的結果相同
alert(F2.caller); //如果被 F3 調用,則顯示函數 F3 的代碼
alert(F3); //顯示函數 F3 的代碼
}
function F3()
{
F2();
}
F3();
//-->
</script>
</body>
</html>