javascript的this的明白

javascript的this关键字老是让人捉摸不透,this关键字代表函数运转时,自动天生的一个内部对象,只能在函数内部运用,由于函数的挪用场景差别,this的指向也差别。实在只需明白javascript言语的特征就很好明白this。在javascript中,函数能够直接挪用:

function range(){
    this.min = 5;
}
range()
console.info(min)  ==>    5

这里函数range是在全局中运转的,所以this指向全局对象,在浏览器中全局对象是window。函数也能够作为对象的要领挪用,以下:

var range = {
    setmin : function(){
        this.min = 5;
    }
}

range.setmin();
console.log(min);   ==> undefined
console.log(range.min) ==> 5 

当作为对象要领挪用时,this指向的是挪用对象,而不是全局对象。
当函数作为组织函数时,和作为对象要领一样,this指向挪用函数的对象。不反复赘述,另有javascript还供应apply和call要领来转变this绑定的对象。这里不细致议论,你们能够自行百度一下apply和call要领是怎样转变this绑定对象的 。我们末了议论议论当this关键字在闭包中时的状况,下面的this在闭包中:


var range = {
    setrange : function(){
        this.min = 5;
        var setmax = function(){
            this.max = 100;
        };
        setmax();
    }
};

range.setrange();
console.log(range.min);   ==> 5
console.log(range.max);   ==> undefined
console.log(max);         ==> 100

这里max应当是作为range的属性,可实际上确是全局的,this指向了全局对象,按道理讲this.max的this应当绑定到外层函数的挪用对象上,实际上绑定到了全局,是否是很奇异,这应当是javascript的一个设想缺点。
个人对javascript中的this关键字的明白如上,若有不正,望斧正,感谢。

    原文作者:qaz13666913616
    原文地址: https://segmentfault.com/a/1190000006056490
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞