這與簡單的物件
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
。