文章链接

举个栗子

  1. 作为对象调用时,指向该对象 obj.b(); // 指向obj
  2. 作为函数调用, var b = obj.b; b(); // 指向全局window
  3. 作为构造函数调用 var b = new Fun(); // this指向当前实例对象
  4. 作为call与apply调用 obj.b.apply(object, []); // this指向当前的object

但是!如何解释下面这个例子呢?

      var value = 1

      var foo = {
        value: 2,
        bar: function () {
          return this.value
        },
      }
      console.log(foo.bar()) // 2
      console.log((false || foo.bar)()) // 1