淺析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

結語:學疏才淺,僅供學習與交流

相關文章
相關標籤/搜索