JavaScript中this詳解

this 是 JavaScript 語言的一個關鍵字。app

它是函數運行時,在函數體內部自動生成的一個對象,只能在函數體內部使用。函數

function test() { this.x = 1; }

上面代碼中,函數 test 運行時,內部會自動有一個 this 對象可使用。this

 

1、this 的值是什麼

函數的不一樣使用場合,this 有不一樣的值。spa

總的來講,this 就是函數運行時所在的環境對象。code

 

 

2、this 的使用場景

一、做爲通常函數執行

二、做爲對象屬性執行

三、做爲構造函數執行

四、經過 call、apply、bind 調用

 

 

3、this 的判斷

 

1. 做爲通常函數執行時,this 指代全局對象

function test(){ this.x = 1; alert(this.x); } test(); // 1

 

2. 做爲對象屬性執行時,this 指代上級對象

function test(){ alert(this.x); } var o = {}; o.x = 1; o.m = test; o.m(); // 1

 

3. 做爲構造函數調用時,this 指代 new 出的對象

var x = 2; function test(){ this.x = 1; } var o = new test(); alert(x); // 2
alert(o.x);        // 1

對於 new 的方式來講,this 被永遠綁定在了 o 上面對象

 

4. call、apply、bind 調用時,this 指代第一個參數

let a = {} let fn = function () { console.log(this) } fn.bind().bind(a)()

上述代碼中,無論咱們給函數 bind 幾回,fn 中的 this 永遠由第一次 bind 決定,因此結果永遠是 windowblog

 

 

4、總結

相關文章
相關標籤/搜索