1.在一个函数调用另一个函数时,被调用函数会自动生成一个caller属性,指向调用它的函数对象。如果该函数当前未被调用,或并非被其他函数调用,则caller为null。
function testCaller() {
var caller = testCaller.caller;
alert(caller); //该函数是有aCaller调用,因此返回 aCaller的函数体。
}
function aCaller() {
testCaller();
}
aCaller();
2. 当函数被调用时,它的arguments.callee对象就会指向自身,也就是一个对自己的引用。
由于arguments在函数被调用时才有效,因此arguments.callee在函数未调用时是不存在的(即null.callee),且解引用它会产生 异常。
function aCallee(arg) {
alert(arguments.callee);//该处显示aCallee的函数体
}
function aCaller(arg1, arg2) {aCallee();}
aCaller();