複習 JavaScript 關鍵字 this

this

this是js的一個關鍵字,只能在函數內部使用,在函數運行時候自動生成的內部對象,表明函數運行時候的做用域指向,使用頻率極高!app

經常使用的用法與做用域指向

  1. 函數調用:js裏面規定當一個函數並不是某一個對象,直接調用的時候,稱之爲函數調用,此時this指向全局對象Global。函數

    var t = 1;
    function test(){
        console.log(this.t)
    }
    test() //1
  2. 方法調用:當一個函數做爲一個對象的屬性調用時候([fn]下標表達式或者.fn點表達式)稱之爲方法調用,此時this指向這個對象。this

    var t =1;
    var obj= {
         t:2,
         test :function(){
             console.log(this.t)
         }
    }
    obj.test() // 2
  3. 做爲構造函數調用:var test = new fn() 的方式 稱fn爲test的構造函數,new的過程當中構造函數的this對象的屬性和方法將被加到新對象的屬性上code

    function fn(){
            this.t = 1
        }
        var test = new fn();
        test.t // 1
        //fn的this對象會被加到新生成的test對象上

4:apply,call,bind方式調用:apply,call,bind均可以改變一個函數運行時候的this指向。對象

var t = 1
var test = function(){
    console.log(this.t)
}
test() //1
test.call({t:2}) //2
test.apply({t:3})//3
test.bind({t:4})()//4

關於bind的分析,能夠看另外一篇文章:bind方法分析與實現作用域

看完了上面4種調用方式能夠得出一個結論this指向的做用域永遠是函數運行時候決定的io

相關文章
相關標籤/搜索