我有以下代码:
$(document).ready(funcA);
function funcA(){
funcB();
}
function funcB(){
//some code
}
在funcB
上,我想知道它是否被$(document).ready
事件调用。
我能做到这一点吗?
答案 0 :(得分:1)
arguments.caller
为您提供了拨打电话的功能。
您可以将它与功能进行比较,如此
if(arguments.caller == funcA)
因为函数是变量的类型。然后,您可以执行一个循环,该循环将arguments.caller
arguments.caller
并跟踪路径,直到您获得null
。
但是,这是一个非标准功能,可能无法正常工作
您可能想要重新编写所有函数,以便将消息传递给funcB
函数,如下所示
我的意思是你这样做(或具有相同原则的东西)
$(document).ready(function(){funcA("called by event listener")});
funcA(message){
funcB(message);
}
funcB(message){
if(message == "called by event listener") alert("Came from event listener");
}
请注意,如果使用arguments[arguments.length - 1]
,则无需为参数命名(如果您不想使所有内容混乱)。 arguments
是所有参数的数组。
您也可以尝试使用Function
原型,并尝试使每个函数调用沿着它收到的最后一个参数传递,这样您就不必自己动手了。