一个经典的例子
function foo() {
var a = 2;
this.bar();
}
function bar() {
console.log( this.a );
}
foo(); // ReferenceError: a is not defined
就以上代码环境而言,bar()作用域内没有变量a,代码中试图访问foo()中的a变量,这是绝对不可能的。
this是在javascript代码运行时进行绑定的,并不是在编写时绑定的,它的上下文取决于函数调用时的各种条件。
this的 绑定 和 函数声明的位置 没有任何关系,只取决于函数的调用方式。
一句话
this实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用。













网友评论