'这'表现不同

时间:2018-01-08 09:34:14

标签: javascript javascript-objects

1

为什么上面的代码会返回{{1}}和{{1}}?

2 个答案:

答案 0 :(得分:1)

exec()函数调用它时,将this作为窗口对象引用。因此它显示3作为输出。因为全局x变量的值为3。

obj1.obj2.fun()函数调用它时,引用this是obj2对象。因此它显示1作为输出。因为obj2有自己的属性x,值为1。

您可以在此处更清楚地了解thisunderstand-javascripts-this-with-clarity-and-master-it

答案 1 :(得分:-1)

var exec = obj1.obj2.fun

该语句返回函数的引用。不是函数返回的值。

现在当你调用exec()时,它将运行该函数,但将获取全局变量x的值。

所以基本上如果你是console.log exec,它会显示功能代码,而不是值。

在最后一行中,您实际上是在对象中执行该函数,因此它返回obj2.x的值。