你不知道的javascript (1) --- this

this

先說明一下,this是我JavaScript的盲區,寫這篇文章,就是爲了讓本身能從新認識this,而且搞清楚,js裏面的this,究竟是什麼。 這個系列主要是記錄我本身看《你不知道的JavaScript》這本書的筆記。函數

this的定義:執行上下文。
這句話理解起來,很費勁。這本書也是舉了好幾個例子來講明,這句話的含義。我我的也認爲,不經過代碼,很是難說明問題。post

exp1:this

function fn() {
    console.log('fn', this)
}

fn() 
// log: 
// fn, 
// Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …}

這個例子很是簡單,通常也能看出輸出的this是window,緣由很簡單,這個fn是全局函數,也是在全局做用域下運行的,因此執行上下文,能夠理解爲執行做用域,就是window。code

exp2:ip

var count = 0;
function fn(num) {
    console.log('你說幾就幾:'+num)
    this.count += 5
}

fn.count=1

fn(2) // 你說幾就幾:2
console.log(fn.count) // 1
console.log(count) // 5

這個例子,執行 fn.count 和 fn內部的 this.count其實沒什麼關係。由於fn在執行的時候,執行上下文仍是window。因此,this.count += 5修改的是全局的count,並非fn自身的count。作用域

exp3:io

function fn() {
    this.count = 1;
    function myFoo() {
        this.count +=2;
    }
    myFoo()
    console.log(this.count)
}
fn() // 3

未完待續。。。console

相關文章
相關標籤/搜索