this
是 JavaScript 中一個很有趣的關鍵字。
會隨著函數的使用場合不同指向不同的實例,但保持一個原則,它指向調用函數的對象。
分了以下幾種狀況讓各位思索。
this
指向根物件 (單純調用函數)
var x = 100;
function print() {
console.log(this.x);
}
print(); // 100
this
指向對象 (作為對象調用函數)
var obj = {
name: 'Tester',
action: function () {
console.log(this.name);
}
};
obj.action(); // Tester
this
指向 new
所產生的新物件
function Person(name, age) {
this.name = name;
this.age = age;
}
var p = new Person('James', 27);
console.log(p.age); // 27
console.log(age); // age is not defined
this
指向 call
或 apply
所指派給 this 的物件
var obj = {
locationX: 22.28,
locationY: 10.13
};
function GPS(arg1) {
console.log(this.locationX);
console.log(this.locationY);
console.log(arg1);
}
GPS.call(obj, 'End');