一道关于 JavaScript 中 this 的题目的困惑

看到很多资料说,哪个对象调用了这个函数,这个函数中的 this 就指向这个对象。
下面这个例子中,foo这个函数,是通过 foo()这个语句调用的,为什么this 指向全局?并没有 Window.foo( )这样由全局对象调用呀?
求教,多谢!

var x = 10;
var obj = {
  x: 20,
  f: function () {
     var foo = function (){
         console.log(this.x);
     }
     foo();
  }
};
obj.f(); //10
阅读 1.3k
评论
    7 个回答
    • 1.9k

    是这样子的,我写在注释里面

    var x = 10;
    var obj = {
      x: 20,
      f: function () {
         var foo = function (){
             console.log(this.x);//你这是把函数赋值给一个 foo的变量。此时的 foo 是全局的,所以下面调用 foo()这里是10嘛
         }
         foo();
      }
    };
    obj.f(); // 这个调用 f 函数,因为 f(),并没有返回出去什么,所以这里是 undefined
      相似问题
      推荐文章