Wenn ich diesen Code ausführen
Scope in Javascript-Objekte
f= function(){
let test= "hello";
let ret={
"test": "world",
"func": function(){
console.log(test);
}
}
return ret;
}
let check= f();
check.func()
I-Ausgang als "Hallo" zu bekommen. Aber ich kann nicht herausfinden, warum es passiert. Nach dem, was ich gelesen habe, wird die Scope-Kette während der Definition übereinander gestapelt und der letzte Block des Scope wird zur Laufzeit an sie angehängt. Sollte also die Scope-Kette nicht global sein -> Funktion f -> ret Object -> Funktionstest? Warum werden die Mitglieder von ret-Objekt aus der Scope-Kette ausgeschlossen? Ist es so etwas wie Mitglieder eines Objekts, die nicht an den Bereich gebunden sind und nur Teil des Kontexts sind?
Es gibt einen Unterschied zwischen 'this.test' und der Variablen' test'. Es gibt nur einen von letzterem, und er hält "Hallo". – deceze
Objekte erstellen keinen Bereich, nur * Funktionen tun dies. – zerkms
@zerkms So Objekt-Mitglieder werden nie Teil des Bereichs sein. Sie können nur einen Kontext erstellen. Korrigiere mich, wenn ich falsch liege. – krrish