js 中this的指代,为什么下面代码的效果会不同?

由于在https://segmentfault.com/q/10...中被大佬问道bind方法到底是干了什么?发现确实不知道,于是乎赶紧搜索。。。
于是发现了http://www.javascripture.com/...
但是在研究例子的过程中发现了一个新的问题,我觉得在弄懂bind之前,可能需要先弄懂this
所以想问下能不能解释一下下面的的代码。或者给出链接让我自己看也行。

<script>
"use strict";

var obj=function(){
}

obj.prototype.a=function(){
    console.log("a",this)
}

var x=new obj()
var y=x.a
x.a()
y()


</script>
阅读 3.3k
3 个回答

不是很好描述,给出mdn 上关于 this 的解释: this

我这边回答一下我的看法吧(自己推测值的时候,推测错了一个):

先说浏览器运行的结果:

clipboard.png

1) 其实对于方法来说,谁调用它,在它内部this就是谁.

第一个结果为一个obj的原因就是

var x = new obj();

会返回一个对象,但是其又没有任何属性所以就像你看到的一样。。

2) 第二个为什么是 undefined

首先这个是函数调用,其次因为这段函数里面用了

"use strict";

这货会将所有函数调用里面的this指定为undefined

如果你去掉它,就会显示 为:

clipboard.png

我这个给弄错了。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏