this是什么?(無敵版)

今天帶大家觀察一波this指向是什么!
總結(jié)起來就六個字 誰調(diào)用,指向誰
含義: 當(dāng)一個函數(shù)沒有明確的調(diào)用對象的時候, 也就是單純作為獨(dú)立函數(shù)調(diào)用的時候, 將對函數(shù)的this使用默認(rèn)綁定: 綁定到全局的window對象
在顯式綁定下: 函數(shù)將取得在“ 包含對象“ 里的永久居住權(quán), 一直都會” 住在這里“

image.png

function fire() {
    console.log(this === window); //fire此時是全局的方法,this指向window
}
fire(); // 輸出true
var a = 666;
console.log(this.a); //666 因為此時this指向了window,因而調(diào)用666
function fire() {
    var a = 2;
    console.log(this.a); //666 因為此時this指向了window,因而調(diào)用666

    function innerFire() {
        var a = 3;
        console.log(this.a); //666 因為此時this指向了window,因而調(diào)用666
    }
    innerFire();
}
fire(); //輸出1
var a = 666;
console.log(a); //666 a在全局作用域
function fire() {
    var a = 777;
    console.log(a); //777 fire函數(shù)作用域
    function innerFire() {
        var a = 999;
        console.log(a); //999 此時打印輸出a,a在innerFIre作用域。從自身作用域查找變量,未找到才往上查找
    }
    innerFire();
}
var obj = {
    b:2,
    fire: function () { //此時函數(shù)的this被隱式綁定到了對象obj
        console.log(this == obj); // obj中有fire函數(shù),因而默認(rèn)this指向obj
        console.log(this.b); // 2 this.a 相當(dāng)于obj.b =2
    }
}
obj.fire(); // 輸出2

全局環(huán)境作用域: this在全局環(huán)境始終指向window

var a = 1
function test () {
    console.log(this.a)
}
var obj = {
    a: 2,
    test
}
var obj0 = {
    a: 3,
    obj 
}
obj0.obj.test()//2,總是找他上一級的對象所以就是obj
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容