this
先说明一下,this是我JavaScript的盲区,写这篇文章,就是为了让自己能重新认识this,并且搞清楚,js里面的this,到底是什么。 这个系列主要是记录我自己看《你不知道的JavaScript》这本书的笔记。
this的定义:执行上下文。
这句话理解起来,很费劲。这本书也是举了好几个例子来说明,这句话的含义。我个人也认为,不通过代码,非常难说明问题。
exp1:
function fn() {
console.log('fn', this)
}
fn()
// log:
// fn,
// Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …}
这个例子非常简单,一般也能看出输出的this是window,原因很简单,这个fn是全局函数,也是在全局作用域下运行的,所以执行上下文,可以理解为执行作用域,就是window。
exp2:
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:
function fn() {
this.count = 1;
function myFoo() {
this.count +=2;
}
myFoo()
console.log(this.count)
}
fn() // 3
未完待续。。。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。