### 为什么要用this
下面两段代码功能是一样的
```
function identify(){
console.log(this.name.toUpperCase());
}
var me = {name: 'qc'};
identify.call(me);
```
```
function identify(context){
console.log(context.name.toUpperCase());
}
var me = {name: 'qc'};
identify(me);
```
this有时候并不会指向自身,比如函数。函数不具有保存this的功能
```
function foo(){
this.count++;
}
var count = 0;
foo.count = 10;
foo();
//this指向了window
console.log(count); //1
console.log(foo.count); //10
```
如何让函数中的this指向自身呢?
```
function foo(){
foo.count++;
}
foo.count = 0;
foo();
console.log(foo.count);
```
或者是
```
function foo(){
this.count++;
}
foo.count = 0;
foo.call(foo);
console.log(foo.count);
```
this实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用,比如在全局作用域调用,this就指向window。
- 你不知道的JS上
- 第一部分 第三章 函数作用域和块作用域
- 第一部分 第四章 提升
- 第一部分 第五章 闭包
- 第二部分 第一章 关于this
- 第二部分 第二章 this全面解析
- 第二部分 第三章 对象
- 第二部分 第五章 原型
- 第二部分 第六章 行为委托
- 你不知道的JS中
- 第一部分 第二章 值
- 第一部分 第三章 原生函数
- 第一部分 第四章 强制类型转换
- 第一部分 第五章 语法
- 第二部分 第一章 异步
- 第二部分 第三章 Promise
- 第二部分 第四章 生成器
- 第二部分 第五章 性能
- 你不知道的JS下
- 第一部分 总结
- 第二部分 第二章 语法
- 第二部分 第三章 代码组织
- 第二部分 第四章 Promise
- 第二部分 第五章 集合
- 第二部分 第六章 新增API
- 第二部分 第七章 元编程
- 第二部分 第八章 ES6之后