浅析Js之 “This” 篇

1、This是什么

1.概念:

this是一个对象,这个对象是指向当前代码中的所需的各种资源。bash

2.特色:

  • This无处不在,有Js的地方就能访问This
  • This的值随时都能改变,只有在调用时才能肯定
  • 不能手动修改This的值

2、This的应用场景

1.四种状况

这个函数不是某一个对象的属性(不是某个方法)。就是一个普通的被调用的函数。app

这个函数是一个具体的对象的属性。

若是在调用函数以前加一个new的话,会建立并返回一个新的对象,而这个函数内部的this就会指向这个对象

能够经过Function对象的apply和call方法来指定函数内部的this的值。

2.举一个简单地例子:

<script>
var a = 1;
var obj =  {
        a :2,
        f: function(){ console.log(this.a);}
}
var f = obj.f;
obj.f();        //  2
f();            //  1
</script>
复制代码

上述代码一样都是调用了函数f,但因为this的指向不一样,因此调用的a的值也就不一样函数

总之,若是有明确的对象调用this,则指向这个对象;不然指向window学习

3、This与原型链综合应用

<script>
       var a = [1,2,3,4,5,6]
       Array.prototype.getPos = function (x){
           for(let i = 0;i<this.length;i++){
               if(x == this[i]){
                   var index = i;
                   break;
               }
           }
           return index;
       }
       console.log(a.getPos(5));        //  4
</script>
复制代码

对象a自身本没有getPOS这个函数,因此它向原型中寻找,因为咱们在原型中建立了一个getPOS,因此能够调用,而getPOSa调用,this就指向了aui

结语:学疏才浅,仅供学习与交流

相关文章
相关标签/搜索