如何在JavaScript中从调用方获取对象引用

如何在JavaScript中从调用方获取对象引用,javascript,arguments,Javascript,Arguments,我实现了一个小的(可能不是标准的)函数来获取JavaScript中的调用堆栈。但是,下面的这段代码只获取函数引用。是否可能将对象分配给每个调用方 function getCallStack() { let stack = []; let caller = arguments.callee.caller; while (caller !== null) { stack.push(caller); // I would like "stack.push([caller, getO

我实现了一个小的(可能不是标准的)函数来获取JavaScript中的调用堆栈。但是,下面的这段代码只获取函数引用。是否可能将对象分配给每个调用方

function getCallStack() {
  let stack = [];
  let caller = arguments.callee.caller;

  while (caller !== null) {
   stack.push(caller); // I would like "stack.push([caller, getObject(caller)]);
   caller = caller.caller; 
  }
  return stack;
}

如果我执行以下代码
console.log(getCallStack())
,我可以得到类似
[[Function:f3],[Function:f2],[Function:f1]]
。我想得到类似[
[[Function:f3],obj3],[Function:f2],obj2],[Function:f1],obj1]]
的东西,其中
obj1,obj2,obj3
只是对对象的引用

引用什么对象?我相信这会对您有所帮助:@Pointy,每个调用方的对象,例如
obj1.f1(),我想要
obj1
我想你不能访问它。您需要的是如何在每个父函数中绑定此
,而这并不公开。如果您检查另一条注释中链接的答案,您将看到有更现代的方法获取堆栈跟踪。@mamounothman,console.trace仅以字符串形式返回这些值,但我需要它们的引用。