JAVASCRIPT编程 this的用法

来源:互联网 发布:akg k374u 知乎 编辑:程序博客网 时间:2024/06/10 05:00

一段代码:

 

<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


 

例子的第二种方式,通过回调输出a对象的nameA属性时,alert(this.a.nameA);是错误的,alert(this.nameA);才是对的,原因就是this指向了a,而不是b了
0 0