this指向

this指向的狀況,取決於函數調用的方式有哪些:
一、經過函數名()直接調用的:this指向window
二、經過對象.函數名()調用的:this指向這個對象;
三、函數做爲數組的一個元素,經過數組下標調用的:this指向這個數組
四、函數做爲window內置函數的回調函數調用時:this指向window
例:setTimeout(func,1000);setInterval等數組

五、函數做爲構造函數,用new關鍵字調用時:this指向的是new出的新對象函數

 

例:function f1(){
            var tmp = 1;
            this.x = 3;
            console.log(tmp); //A
            console.log(this.x); //B
        }
            var obj = new f1(); //1
            console.log(obj.x) //2
            console.log(f1()); //3this

 

這道題讓我從新認識了對象和函數,首先看代碼(1),這裏實例話化了 f1 這 個類。至關於執行了 f1 函數。因此這個時候 A 會輸出 1, 而 B 這個時候的 thi s 表明的是 實例化的當前對象 obj B 輸出 3.。 代碼(2)毋庸置疑會輸出 3, 重點 代碼(3)首先這裏將再也不是一個類,它只是一個函數。那麼 A 輸出 1, B 呢? 這裏的 this 表明的其實就是 window 對象,那麼 this.x 就是一個全局變量 至關於 在外部 的一個全局變量。因此 B 輸出 3。最後代碼因爲 f 沒有返回值那麼一個函數 若是沒返回值的話,將會返回 underfined ,因此答案就是 : 1, 3, 3, 1, 3, underfined 。對象

相關文章
相關標籤/搜索