例如,使用资源管理器调试工具,我已经使用断点(例如Chrome中的'DevTools')在某个函数内停止了。
是否有可能知道从该函数上下文到全局上下文(window
对象)的完整路径?
像:
window.***.***.***.***.CustomFunction()
有可能吗?
答案 0 :(得分:2)
是否有可能知道从该函数上下文到全局上下文(窗口对象)的完整路径?
如果函数执行尚未从window
上下文开始(例如,从闭包内部调用的函数),则为no,其上下文的完整路径将永远不会到达window
。
正如其他人在评论中指出的那样,最好的办法是在开发工具的Call Stack
部分中将Scope
面板与Sources
面板结合使用。< / p>
从字面上看,你可能会得到关于callstack中特定步骤的所有信息;它是如何被调用的,一直到第一个触发器,你可以检查它的所有范围以及它从每个范围使用的变量和函数。
您甚至可以通过启用async
选项来跟踪异步调用中的堆栈。这太棒了。
答案 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);