1
为什么上面的代码会返回{{1}}和{{1}}?
答案 0 :(得分:1)
当exec()
函数调用它时,将this
作为窗口对象引用。因此它显示3作为输出。因为全局x
变量的值为3。
当obj1.obj2.fun()
函数调用它时,引用this
是obj2对象。因此它显示1作为输出。因为obj2有自己的属性x,值为1。
您可以在此处更清楚地了解this
。 understand-javascripts-this-with-clarity-and-master-it
答案 1 :(得分:-1)
var exec = obj1.obj2.fun
该语句返回函数的引用。不是函数返回的值。
现在当你调用exec()时,它将运行该函数,但将获取全局变量x的值。
所以基本上如果你是console.log exec,它会显示功能代码,而不是值。
在最后一行中,您实际上是在对象中执行该函数,因此它返回obj2.x的值。