你不知道的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

相关文章
相关标签/搜索