浅析Js之 “This” 篇

368 阅读1分钟

一、This是什么

1.概念:

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

2.特点:

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

二、This的应用场景

1.四种情况

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

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

如果在调用函数之前加一个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

三、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就指向了a

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