这与简单的对象
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
。