书中有句话是这样说的:
我们排除了一些对于 this 对错误理解并且明白了每个函数的 this 是在调用时被绑定的,完全取决于函数的调用位置。
然后举了例子
function baz(){ // 调用位置是全局作用域,调用栈 baz
console.log('baz');
bar(); // bar 的调用位置
}
function bar(){ // 调用位置在 baz 中,调用栈 baz -> bar
console.log('bar');
foo(); // foo 的调用位置
}
function foo(){ // 调用位置在 bar 中,调用栈 baz -> bar -> foo
console.log('foo');
}
baz(); // baz 的调用位置
以上的例子虽然能够说明调用栈直接的关系,但是我不能明白,为什么说调用位置是this的决定性因素。
this的指向不是取决于,调用的绑定方式吗? 不管调用位置在哪里,你的调用方式一成不变,它的this 依然会执行默认绑定。
所以为什么说调用位置是this的决定性因素???
其实他在后面有说:
其实就是在说需要定位到函数被调用的位置,重点是找到函数被谁调用。
最后的最后夹带一些私货,就是《你不知道的JavaScript》在基础不扎实的时候不要看,不然很容被里面的一些细枝末节的内容给带偏了路线,然后开始钻牛角尖,这是在浪费时间。所以我一直把这本书归于旁门左道。
另外一个就是最好可以对照着原版来看,因为在翻译的过程中会丢失一部分信息(私货2,反译得很差劲),所以在这种让你觉得困惑得时候直接看原版会好理解很多。
这里是原文地址 You-Dont-Know-JS/ch2.md at 1st-ed · getify/You-Dont-Know-JS