你不知道的JS系列 ( 25 ) - 间接引用

你有可能有意或者无意地创建一个函数的“间接引用”,在这个情况下,调用这个函数会应用默认规则
间接引用最容易在赋值时发生:
function foo(){
  console.log(this.a);
}
var a = 2;
var o = { a: 3, foo: foo};
var p = { a: 4 };
o.foo(); // 3
(p.foo = o.foo)(); // 2
赋值表达式 p.foo = o.foo 的返回值是目标函数的引用,因此调用位置是 foo(),不是o.foo()。根据之前隐式绑定说的,这里会应用默认绑定

猜你喜欢

转载自www.cnblogs.com/wzndkj/p/12453477.html