// Situation 1
var a = function A() {
this.x = 1;
var b = function B () {
this.x = 2;
console.log('Method B : x = ' + this.x);
};
console.log('Method A : x = ' + this.x);
b();
}
当我调用 a() 时,我的结果是
Method A : x = 1
Method B : x = 2
但是,如果我将“this.x = 2”删除为:
// Situation 2
var a = function A() {
this.x = 1;
var b = function B () {
console.log('Method B : x = ' + this.x);
};
console.log('Method A : x = ' + this.x);
b();
}
我的结果将是
Method A : x = 1
Method B : x = 1
我不明白为什么
- 在情况 2 中:函数 B 的“this”引用了函数 A 的“this”
但
- 在情况 1 中:在函数 B 中分配“this.x = 2”时,函数 A 的“this.x”没有改变
我的代码在 Chrome v23 上运行