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 指向 callapply 所指派給 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');

results matching ""

    No results matching ""