0

在尝试执行以下代码段时,我希望doFoo.call(obj, obj.foo) 调用返回"inside obj",因为调用堆栈中前一个元素的动态范围具有对的引用,a但调用具有全局上下文。我在这里想念什么?

function foo() {
  // debugger
  console.log(this, this.a);
}

function doFoo(fn) {
  // `fn` is just another reference to `foo`
  // debugger 
  fn()
  // <-- call-site!
}

var obj = {
  a: 'inside obj',
  foo: foo
};

var a = "oops, global"; // `a` also property on global object

doFoo(obj.foo); // "oops, global"
doFoo.call(obj, obj.foo) // "oops, global"```

4

0 回答 0