javascript执行方法的疑惑。

var x= 'global';

var bar = {
  x : 'local',
  foo : function () {
    console.log(this.x);
  }
};


bar.foo();        // output:local

(bar.foo)();    // output:local

为什么(bar.foo)()返回的结果也是global,我的理解是先执行左边的括号,那么这是一个匿名函数,这个匿名函数自执行,没有找到方法的调用者,理应自动指向全局对象,那么返回接活应该是global才对。

请大神指正。

阅读 2.7k
2 个回答

主要看this指向哪,这里this只会指向本事。,不会指向window..

加括号没卵用,foo.bar 和 (foo.bar) 是一个东西。

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