码迷,mamicode.com
首页 > 其他好文 > 详细

对象方法中的this

时间:2021-01-08 11:39:52      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:comment   define   fun   window   lse   time   iter   alt   cti   

this指向的对象是运行时所在的对象,而不是表面代码中所处的对象

以下三种情况,this指向全局对象

情况一 (obj.foo = obj.foo)()   // window

情况二 (false || obj.foo)()    // window

情况三 (1, obj.foo)()          // window

 

 1 var a = {
 2   p: Hello,
 3   b: {
 4     m: function() {
 5       console.log(this.p);
 6     }
 7   }
 8 };
 9 
10 a.b.m() // undefined

 

对象中的方法,本质上是函数。此函数在内存中单独存在,可以运行在不同环境中。

上述代码变化为以下代码:

 1 var b = {
 2   m: function() {
 3    console.log(this.p);
 4   }
 5 };
 6 
 7 var a = {
 8   p: Hello,
 9   b: b
10 };
11 
12 (a.b).m() // 等同于 b.m()

此时m方法中的this指向b而不是a

 

把方法赋值给变量 vs 把对象赋值给变量

技术图片

 

 

把方法赋值给变量,直接用变量调用方法,此时this指向window,

把对象赋值给变量,通过对象来调用方法,此时this指向当前对象。

 

技术图片

 

对象方法中的this

标签:comment   define   fun   window   lse   time   iter   alt   cti   

原文地址:https://www.cnblogs.com/flyover/p/14244960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!