update:this的指向

This commit is contained in:
qianguyihao 2019-01-12 18:02:13 +08:00
parent eb746fec04
commit 2a919d25eb
2 changed files with 47 additions and 12 deletions

View File

@ -135,8 +135,6 @@
``` ```
## 我的公众号 ## 我的公众号
想学习<font color=#0000ff>**代码之外的技能**</font>?不妨关注我的微信公众号:**千古壹号**id`qianguyihao`)。 想学习<font color=#0000ff>**代码之外的技能**</font>?不妨关注我的微信公众号:**千古壹号**id`qianguyihao`)。
@ -145,6 +143,3 @@
![](http://img.smyhvae.com/2016040102.jpg) ![](http://img.smyhvae.com/2016040102.jpg)

View File

@ -14,14 +14,15 @@
- 4.使用call和apply调用时this是指定的那个对象 - 4.使用call和apply调用时this是指定的那个对象
针对第1和第2条的举例
**针对第1条的举例**
```javascript ```javascript
function fun() { function fun() {
console.log(this);
console.log(this.name); console.log(this.name);
} }
var obj1 = { var obj1 = {
name: "smyh", name: "smyh",
sayName: fun sayName: fun
@ -33,17 +34,56 @@
}; };
var name = "全局的name属性"; var name = "全局的name属性";
//obj.sayName();
//以函数形式调用this是window //以函数形式调用this是window
//fun(); //可以理解成 window.fun() fun(); //可以理解成 window.fun()
```
打印结果:
```
Window
全局的name属性
```
上面的举例可以看出this指向的是window对象所以 this.name 指的是全局的name。
**第2条的举例**
```javascript
function fun() {
console.log(this);
console.log(this.name);
}
var obj1 = {
name: "smyh",
sayName: fun
};
var obj2 = {
name: "vae",
sayName: fun
};
var name = "全局的name属性";
//以方法的形式调用this是调用方法的对象 //以方法的形式调用this是调用方法的对象
obj2.sayName(); obj2.sayName();
``` ```
打印结果:`vae`。 打印结果:
```
Object
vae
```
上面的举例可以看出this指向的是 对象 obj2 ,所以 this.name 指的是 obj2.name。
**箭头函数中this的指向** **箭头函数中this的指向**