js一些的this使用的特殊情况

在一些情况下,this值可能不是我们所期待的值。如下面例子

1.window.identity = "Hello Worde!" 
2.Let object = {
3.      identity: 'My object',
4.      getIdentity () {
5.          return  this.identity;
6.        }
7.}

getIdentity ()方法就是返回this.identity的值。下面来看调用:

 1.object.getIdentity();                //'My object'

2.(object.getIdentity)();               //'My object'

3.(object.getIdentity = object.getIdentity) ();            //'Hello Worde!' 

第一行的调用是正常调用,会返回“My object”,因为this.getIdentity就是this.getIdentity

第二行在调用时把object.getIdentity放在括号里。虽然加了括号之后看起来是对一个函数的引用,但this值并没有变。这是按照规范,object.getIdentity和(object.getIdentity)是相等的。

第三行执行了一次赋值,然后在调用赋值后的结果。因为赋值表达式是函数本身,this值不在与任何对象绑定,所以返回的是“Hello Worde!”。

一般情况下,不大可能像第二行和第三行这样调用对象上的方法。但通过这个例子,我们可以知道,即使语法稍有不同,也可能影响this的值。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容