这与简单的对象

var person = {
  name: 'John Doe',
  age: 42,
  gender: 'male',
  bio: function() {
    console.log('My name is ' + this.name);
  }
};
person.bio(); // logs "My name is John Doe"
var bio = person.bio;
bio(); // logs "My name is undefined"

在上面的代码中,person.bio 使用了上下文this)。当函数被称为 person.bio() 时,上下文会自动传递,因此它会正确记录“我的名字是 John Doe”。将函数分配给变量时,会丢失其上下文。

在非严格模式下,默认上下文是全局对象(window)。严格的模式是 undefined