JavaScript函数中this的理解
this:函数运行时,自动生成的内部对象,代表当前调用该函数的对象,this只能在函数内部使用。
存在下面四种情况的this用法:
1、this指向全局对象global
<script type="text/javascript"> var o = 0; function test() { var o = 1; return this.o; } alert(test());//0 </script>
2、函数作为对象的方法,this指向该对象
<script type="text/javascript"> var o = 0; function test() { return this.o; } var obj = {}; obj.o = 1; obj.m = test; alert(obj.m());//1 </script>
3、函数作为对象的构造函数,this指向使用该构造函数new出来的对象
<script type="text/javascript"> var o = 0; function test() { var o = 2; return this.o; } var obj = new test(); obj.o = 1; alert(obj.o);//1 </script>
4、使用apply方法改变函数中this的指向
<script type="text/javascript"> var o = 0; function test() { return this.o; } var obj = new test(); obj.o = 1; obj.m = test; var obj1 = {}; obj1.o = 2; alert(obj.m.apply());//参数为空则默认使用global对象劫持obj.m方法,所以test方法中的this指向了global对象,所以输出0 alert(obj.m.apply(obj1));//此时test方法中的this指向了obj1对象,所以输出2 </script>