上网的时候经常看到这俩个属性,一直也没有看下是干什么用的,今天正好看了下文章,了解了下并做个记录..
1、caller
返回一个对函数的引用,该函数调用了当前函数
function callerDemo() {
if (callerDemo.caller) {
alert(callerDemo.caller);
} else {
alert("this is a top function");
}
}
function handleCaller() {
callerDemo();
}
caller是Function对象的一个属性,从结果可以看出它返回一个调用当前函数的函数的源代码
2、callee
返回正被执行的函数的源代码
callee是arguments的一个属性,同时它拥有length属性,用于验证参数个数是否相等
function calleeDemo() {
alert(arguments.callee);
}
function calleeLengthDemo(arg1, args, arg3) {
if (arguments.length == arguments.callee.length) {
alert("形参和实参个数相等!");
} else {
alert("实参长度:" + arguments.length);
alert("形参长度:" + arguments.callee.length);
}
}