Javascript函数完整路径

Javascript函数完整路径,javascript,Javascript,例如,使用explorer调试工具,我在某个函数中停止使用断点(“DevTools”,例如在Chrome中) 是否可能知道从该函数上下文到全局上下文(windowobject)的完整路径 比如: 有可能吗?您可以通过以下方式获得所需信息:如果格式不完全相同,请使用。下面是一个正在工作的示例,代码如下。您需要打开控制台才能看到输出。(您可以忽略将在JSFIDLE上看到的XMLHttpRequest错误,该示例仍然有效。如果有人知道如何修复该错误,请告诉我) 是否可能知道从函数上下文到全局上下文(窗

例如,使用explorer调试工具,我在某个函数中停止使用断点(“DevTools”,例如在Chrome中)

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

比如:


有可能吗?

您可以通过以下方式获得所需信息:如果格式不完全相同,请使用。下面是一个正在工作的示例,代码如下。您需要打开控制台才能看到输出。(您可以忽略将在JSFIDLE上看到的XMLHttpRequest错误,该示例仍然有效。如果有人知道如何修复该错误,请告诉我)

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

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

正如其他人在评论中指出的那样,您最好将
调用堆栈
面板与开发工具的
部分中的
范围
面板结合使用

从字面上讲,您将获得有关调用堆栈中特定步骤的所有信息;它是如何被调用的,一直到第一个触发器,您可以检查它的所有作用域以及它在每个作用域中使用的变量和函数

通过启用
async
选项,您甚至可以从异步调用跟踪堆栈。非常棒


通常情况下,不会。函数可能不会与
窗口的
属性的直接或间接属性值相关联。您可以进行深入查找以查找
CustomFunction()
窗口中此
。@MikeMcCaughan出于好奇和使用新的JavaScript框架,它可能有助于更好地理解它们。调用堆栈面板显示了到达函数调用的路径,这可能会更详细地说明JS框架是如何完成任务的。@MikeMcCaughan true。此外,它还显示了范围,这是另一件比“如何直接调用它”更有用的事情。这两个信息源应该比仅仅查找对象所在的位置(如果可以直接访问对象的话)更有用。
window.***.***.***.***.CustomFunction()
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);