确定在JavaScript [复制]调用函数(Determine calling function

2019-07-03 17:47发布

可能重复:
你如何找出在JavaScript中调用函数?

我怎样才能找出一个javascript函数是调用函数(调用堆栈前)?

我想,以确定是否前者调用的函数是在onbeforeunload事件一个__doPostBack。

Answer 1:

每个函数都有一个caller定义的属性。

从https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/caller :

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

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

如果您使用的是匿名函数,你仍然可以访问caller通过属性arguments.calee属性:

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

请注意,此代码访问当前函数,然后引用相同的非标准caller就可以了财产。 这是使用过时的不同arguments.caller直接财产,这是不是在一些现代浏览器中实现 。



Answer 2:

在Cr-48的Chrome操作系统,arguments.callee.caller给整个函数体作为一个字符串,并重命名为匿名电话的功能。



文章来源: Determine calling function in javascript [duplicate]