Ho trovato un valore imprevisto di questa parola chiave nell'esempio seguente:
let x = {
z : 10 ,
get func1() {
return function(v) {
console.log(this === v);
}
}
}
x.func1(x)
Il valore di questa parola chiave è l'oggetto x come se fosse eseguito da quell'oggetto, mi aspetto che solo la funzione get che abbia questa parola chiave sia uguale all'oggetto chiamante x
questo esempio ci mostra la differenza
let x = {
func2() {
return function(v) {
console.log(this === v);
}
}
}
x.func2()(x);
In entrambi gli esempi, func1, che è la funzione getter, e func2, che è un metodo dell'oggetto, vengono eseguiti dall'oggetto x e la funzione restituita viene quindi eseguita. Quindi perché questo valore nel primo esempio non è uguale all'oggetto globale invece che all'oggetto x .
x.func1()
.