From 2a919d25eb014d82c9e0f8321706ee1e329fe20c Mon Sep 17 00:00:00 2001 From: qianguyihao Date: Sat, 12 Jan 2019 18:02:13 +0800 Subject: [PATCH] =?UTF-8?q?update:this=E7=9A=84=E6=8C=87=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03-JavaScript基础/10-作用域.md | 5 ---- 03-JavaScript基础/11-this.md | 54 +++++++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 12 deletions(-) diff --git a/03-JavaScript基础/10-作用域.md b/03-JavaScript基础/10-作用域.md index adda68a..c04159a 100644 --- a/03-JavaScript基础/10-作用域.md +++ b/03-JavaScript基础/10-作用域.md @@ -135,8 +135,6 @@ ``` - - ## 我的公众号 想学习**代码之外的技能**?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。 @@ -145,6 +143,3 @@ ![](http://img.smyhvae.com/2016040102.jpg) - - - diff --git a/03-JavaScript基础/11-this.md b/03-JavaScript基础/11-this.md index 7bf6507..2ad6cff 100644 --- a/03-JavaScript基础/11-this.md +++ b/03-JavaScript基础/11-this.md @@ -14,14 +14,51 @@ - 4.使用call和apply调用时,this是指定的那个对象 -针对第1和第2条的举例: + +**针对第1条的举例**: + +```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是window + 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 @@ -33,17 +70,20 @@ }; var name = "全局的name属性"; - //obj.sayName(); - - //以函数形式调用,this是window - //fun(); //可以理解成 window.fun() //以方法的形式调用,this是调用方法的对象 obj2.sayName(); ``` -打印结果:`vae`。 +打印结果: + +``` + Object + vae +``` + +上面的举例可以看出,this指向的是 对象 obj2 ,所以 this.name 指的是 obj2.name。 **箭头函数中this的指向**: