一段代码:
<script>
function A(){
this.nameA = null;
this.fun=null;
this.init = function(){
this.nameA="xxxyyyyyzzzz";
};
this.init();
}
function B(){
this.a =null;
this.init = function(){
var _a = new A();
_a.fun = this.callbackFun;
this.a=_a;
};
//第一种方式 直接调用
this.callA = function(){
alert(this.a.nameA);
};
//第二种方式 回调
this.callbackA = function(){
this.a.fun();
};
this.callbackFun = function(){
alert(this.nameA);
//alert(this.a.nameA); //错误
};
this.init();
}
var b = new B();
b.callA();
b.callbackA();
</script>
问题:this到底指向谁?
答案:this指向调用函数的对象。谁调用函数,函数中的this就指向谁
function fun(){
this.name=""; //不管函数定义在那个类中,函数中的this只会关心调用他的对象
}
调用函数时this的指向:
fun(),//this指向window
a.fun();//this指向a
a.b.fun(),//this指向b