Javascript函数完整路径

时间:2016-10-28 20:26:03

标签: javascript

例如,使用资源管理器调试工具,我已经使用断点(例如Chrome中的'DevTools')在某个函数内停止了。

是否有可能知道从该函数上下文到全局上下文(window对象)的完整路径?

像:

window.***.***.***.***.CustomFunction()

有可能吗?

2 个答案:

答案 0 :(得分:2)

  

是否有可能知道从该函数上下文到全局上下文(窗口对象)的完整路径?

如果函数执行尚未从window上下文开始(例如,从闭包内部调用的函数),则为no,其上下文的完整路径将永远不会到达window

正如其他人在评论中指出的那样,最好的办法是在开发工具的Call Stack部分中将Scope面板与Sources面板结合使用。< / p>

从字面上看,你可能会得到关于callstack中特定步骤的所有信息;它是如何被调用的,一直到第一个触发器,你可以检查它的所有范围以及它从每个范围使用的变量和函数。

Call stack

您甚至可以通过启用async选项来跟踪异步调用中的堆栈。这太棒了。

enter image description here

答案 1 :(得分:0)

使用stacktrace.js,您可以获得所需的信息(如果不是这种格式)。这是一个有效的jsfiddle,代码如下。您需要打开控制台才能看到输出。 (您可以忽略您将在jsfiddle上看到的XMLHttpRequest错误,该示例仍在那里工作。如果有人知道如何解决这个问题,请告诉我。)

var callback = function(stackframes) {
    var stringifiedStack = stackframes.map(function(sf) {
        return sf.toString();
    }).join('\n');
    console.log(stringifiedStack);
};

var foo = function () {
  var bar = function barFunction (fn) {
    console.log('I am bar');
    fn.call();
  };

  return {
    bar: bar 
  };
};

var baz = function bazFunction () {
  console.log('I am baz');
  StackTrace.get().then(callback);
};

var test = foo();
test.bar(baz);