JavaScript – this 指向

影響 this 的指向是在於函式的呼叫方法。

函式this的指向: 全域物件window

直接調用函式,函式的 this 會指向 window。

1
2
3
4
5
6
7
var myName = 'Louisa';

function callName() {
var myName = "John";
console.log(this.myName);
}
callName(); // Louisa

函式this的指向: 物件本身

作為物件方法來調用函式this,則會指向此物件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var myName = 'Louisa';

function callName() {
var myName = "John";
console.log(this.myName);
}

var family = {
myName: 'Lee',
callname: callName,
Ming: {
myName: ' Ming',
callname: callName
}
}

family.callname(); // Lee
family.Ming.callname(); // Ming

間接執行函式,this的指向 : 全域物件window

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var myName = 'Louisa';

function callName() {
var myName = "John";
console.log(this.myName);
}

var family = {
myName: 'Lee',
callname: callName,
Ming: {
myName: ' Ming',
callname: callName
}
}

var call_name = family.callname;
call_name(); // Louisa

函式中的函式的this指向: 全域物件window

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var myName = 'Louisa';

function callName() {
var myName = "John";
console.log(this.myName);
}

var family = {
myName: 'Fido',
rename: function () {
setTimeout(function () {
console.log(this.myName);
}, 1000);
}
}

family.rename(); // Louisa

函式中的函式的this指向 : 指回物件本身的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var myName = 'Louisa';

function callName() {
var myName = "John";
console.log(this.myName);
}

var family = {
myName: 'Fido',
rename: function () {
var self = this;
setTimeout(function () {
console.log(self.myName);
}, 1000);
}
}

family.rename(); // Fido
作者

LeeU

發表於

2020-12-10

更新於

2024-04-04

許可協議