先说明一下,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