javascript中this指针

看完此片文章豁然开朗,非常感谢。javascript技术难点(三)之this、new、apply和call详解

下面说一说自己的理解:

this指针总是指向调用他的对象,其实我更愿意理解为:this指针总是指向其最小的作用域

在javascript中,我们可以理解最外层的作用域是windows。

在下面的代码段中,fun1最近的作用域是windows,因此this的值是Window.

<script type="type/javascript">

function fun1(){
    console.log(this);//Window
}

fun1();

</script>

如果有了更小的作用域范围,则this会指向那个更小的作用域。如下面的代码,我们new出了一个Person对象,其对show()来说,相对与windows范围更小,因此this指针指向Person。

<script type="text/javascript">
    function Person(){
        this.show = function(){
            console.log(this);// Person
        }
    }
    var person = new Person();
    person.show();
</script>

 出了上面的new方法外,更改作用域范围的方法:

new(包括对象字面量定义)、call、apply

因此这三种方法可以通过改变作用域而改变this指针的指向。

原文地址:https://www.cnblogs.com/perallina/p/5956667.html