Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定javascript中的调用函数_Javascript_Function_Callstack - Fatal编程技术网

确定javascript中的调用函数

确定javascript中的调用函数,javascript,function,callstack,Javascript,Function,Callstack,可能重复: 如何在javascript函数中找出调用(调用堆栈中的前一个)函数 我想确定前一个调用的函数是否是onbeforeunload事件中的u doPostback。每个函数都定义了一个调用方属性 发件人: Function.caller属性不是ECMA3标准的一部分,但它在所有主要浏览器中都有实现,包括IE和Firefox 如果您使用的是匿名函数,您仍然可以通过以下属性访问调用者属性: function() { if (arguments.callee.caller == nu

可能重复:

如何在javascript函数中找出调用(调用堆栈中的前一个)函数


我想确定前一个调用的函数是否是onbeforeunload事件中的u doPostback。

每个函数都定义了一个调用方属性

发件人:

Function.caller
属性不是ECMA3标准的一部分,但它在所有主要浏览器中都有实现,包括IE和Firefox

如果您使用的是匿名函数,您仍然可以通过以下属性访问
调用者
属性:

function() {
    if (arguments.callee.caller == null) {
        return ("The function was called from the top!");
    } else
        return ("This function's caller was " + arguments.callee.caller);
    }
}

请注意,此代码正在访问当前函数,然后在其上引用相同的非标准
调用者
属性。这与直接使用弃用属性不同,后者在某些现代浏览器中没有实现。

在cr-48上的chromeos中,arguments.callee.caller将整个函数体作为字符串提供给两个命名的匿名调用函数

请注意,
caller
是一个非标准属性。你的里程数可能因浏览器而异。确实是非标准属性,但IE中有类似的东西吗?它应该只在IE中为我的客户端工作,Firefox不受支持。
caller
不是ECMA3标准的一部分,但它在所有主要浏览器中都有实现:IE、Firefox、Safari。在IE中使用应该是安全的。我已经编辑了我的回复以涵盖非标准争用,并添加了更多关于获取匿名函数调用方的信息。仅供参考,刚刚测试了
调用方
。正如詹姆斯所说,他们得到了很好的支持。在FF3.5、IE7、Chrome2、Safari4上演示并更正(均在Windows上)。Opera9是一个很奇怪的版本,并且已经严重损坏:它有属性,但它指的是被调用方,而不是调用方!(吓人)这里的测试页面:如何获取调用方的名称?@Umair
arguments.callee.caller.name
function() {
    if (arguments.callee.caller == null) {
        return ("The function was called from the top!");
    } else
        return ("This function's caller was " + arguments.callee.caller);
    }
}