談談你對this的理解


this的指向不是在編寫時確定的,而是在執行時確定的,同時,this不同的指向在於遵循了一定的規則。

1.默認情況下,指向全局,瀏覽器的話就是指向window

2.如果函數被調用的位置存在上下文,那么函數被隱式綁定

function f() {
        console.log( this.name );
    }
    
    var obj = {
        name: "Messi",
        f: f
    };
    
    obj.f(); //被調用的位置恰好被對象obj擁有,因此結果是Messi

3.new 指向這個新對象。

function Person(name) {
        this.name = name;
        console.log(name);
    }
      
    var person1 = new Person('Messi'); //Messi

4.箭頭函數的this指向哪里?
箭頭函數的是沒有屬於自己的this的,它所謂的this是捕獲其上下文的this,作為自己的this,所以箭頭函數不會被new調用,所謂的this也不會被改變
我們可以用Babel理解一下箭頭函數:

// ES6
    const obj = {
        getArrow() {
            return () => {
                console.log(this === obj);
            };
        }
    } 

    // ES5,由 Babel 轉譯
    var obj = {
        getArrow: function getArrow() {
            var _this = this;
            return function () {
                console.log(_this === obj);
            };
        }
    };


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM