javascript 中 this 的绑定完全取决于函数的调用位置,调用位置就是函数在代码中被调用的位置(而不是声明的位置),只有仔细分析调用位置才能理解this的调用过程。寻找调用位置最重要的是要分
javascript 中 this 的绑定完全取决于函数的调用位置,调用位置就是函数在代码中被调用的位置(而不是声明的位置),只有仔细分析调用位置才能理解this的调用过程。
寻找调用位置最重要的是要分析调用栈(就是为了到达当前执行位置所调用的所有函数)。示例:
function baz(){ //当前调用栈是:baz //因此,当前调用位置是全局作用域 console.log("baz"); bar();//<-- bar的调用位置}function bar(){ //当前调用栈是baz->bar //因此,当前调用位置在baz中 console.log("bar"); foo();//<--foo的调用位置}function foo(){ //当前调用栈是baz ->bar ->foo //因此,当前调用位置在bar中 console.log("foo");}baz();//<-- baz的调用位置
调用栈中的第二个元素就是真正的调用位置,也就是this的绑定