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>
原文地址:https://www.cnblogs.com/JDotNet/p/3436598.html