Ich weiß, es ist nicht zu empfehlen, das globale Objekt zu verwenden und die ganze Idee hinter der Verwendung von AMD ist die Verwendung des globalen Objekts zu vermeiden. Aber für einige Legacy-Codes muss ich einige Dinge im globalen Objekt definieren. Derzeit sieht der Code wie folgt aus:Zugriff auf globale Objekt bei Verwendung von requirejs
//example2.js
define(function(){
var globalObject = window;
globalObject.x = ...
globalObject.y = ...
});
Es funktioniert, aber harte Kodierung des globalen Objekt window
nicht sehr schön aussieht und ich bin gespannt, ob es möglich ist, es zu entfernen. Wenn define()
nicht verwendet wurde, sah der Code wie folgt:
//example1.js
x = ...
y = ...
Ich weiß, ich weiß, du diesen Code hassen, aber lassen Sie sich auf den Punkt: Wie kann die globale Variable innerhalb der define()
in strukturierter Art und Weise zugegriffen werden Funktion in Requirejs? Ich wünsche, es so etwas wie ein versteckten letzten Parameter an die Funktion war, die die define()
wie diese geführt wird:
//example3.js
define(function(globalObject){
globalObject.x = ...
globalObject.y = ...
});
Oder noch einfacher: die this
Variable in dieser Funktion auf das globale Objekt verweisen würden. Zum Beispiel:
//example4.js
define(function(){
this.x = ...
this.y = ...
});
Hinweis: bin ich über diese letzten nicht sicher. Untersuchung der this
Variable innerhalb der Funktion, die an require()
übergeben wird, sagt, dass es gleich window
ist, die die Antwort auf meine Frage sein kann, aber ich konnte keine Dokumentation finden, die den Kontext erwähnt, dass die übergebene Funktion ausgeführt wird. Vielleicht läuft es doch im Kontext der globalen Variablen?
das ist eine gute Idee, aber ich frage mich immer noch, ob es einen Mechanismus von innerhalb der 'define()' Funktion gibt, die nicht meinen Code in eine sofortige Anruffunktion einbetten muss? – AlexStack