Ich habe im folgenden Beispiel einen unerwarteten Wert dieses Schlüsselworts gefunden:
let x = {
z : 10 ,
get func1() {
return function(v) {
console.log(this === v);
}
}
}
x.func1(x)
Der Wert dieses Schlüsselworts ist das Objekt x, als ob es von diesem Objekt ausgeführt wird. Ich erwarte nur die Funktion get , die es gibt dieses Schlüsselwort hat, dem aufrufenden Objekt x entspricht
Dieses Beispiel zeigt uns den Unterschied
let x = {
func2() {
return function(v) {
console.log(this === v);
}
}
}
x.func2()(x);
In beiden Beispielen werden func1, die die Getter-Funktion ist, und func2, die eine Methode des Objekts ist, vom Objekt x ausgeführt , und die zurückgegebene Funktion wird dann ausgeführt. Warum entspricht dieser Wert im ersten Beispiel nicht dem globalen Objekt anstelle des Objekts x ?
x.func1()
.