W poniższym przykładzie znalazłem nieoczekiwaną wartość tego słowa kluczowego:
let x = {
z : 10 ,
get func1() {
return function(v) {
console.log(this === v);
}
}
}
x.func1(x)
Wartością tego słowa kluczowego jest obiekt x, tak jakby został wykonany z tego obiektu, oczekuję, że tylko funkcja get, która ma to słowo kluczowe, jest równa obiektowi wywołującemu x
ten przykład pokazuje nam różnicę
let x = {
func2() {
return function(v) {
console.log(this === v);
}
}
}
x.func2()(x);
W obu przykładach func1, która jest funkcją gettera, i func2, która jest metodą obiektu, są wykonywane z obiektu x , a następnie zwracana funkcja jest wykonywana. Dlaczego więc ta wartość w pierwszym przykładzie nie jest równa obiektowi globalnemu zamiast obiektowi x .
x.func1()
.