So che non è consigliabile utilizzare l'oggetto globale e l'intera idea dietro l'utilizzo di AMD è di evitare l'utilizzo dell'oggetto globale. Ma per qualche codice legacy, devo definire alcune cose nell'oggetto globale. Attualmente il codice è simile al seguente:accesso all'oggetto globale quando si utilizza requirejs
//example2.js
define(function(){
var globalObject = window;
globalObject.x = ...
globalObject.y = ...
});
Funziona ma difficile codifica l'oggetto globale window
non ha un aspetto molto bello e sono curioso di vedere se è possibile rimuoverlo. Quando define()
non è stato utilizzato, il codice si presentava così:
//example1.js
x = ...
y = ...
Lo so, lo so che odi questo codice, ma cerchiamo di essere al punto: come può la variabile globale può accedere in modo strutturato all'interno del define()
funzione in requirejs? Vorrei che ci fosse una sorta di nascosto ultimo parametro alla funzione che viene passata al define()
in questo modo:
//example3.js
define(function(globalObject){
globalObject.x = ...
globalObject.y = ...
});
O ancora più semplice: la variabile this
ricorda all'oggetto globale all'interno di quella funzione. Per esempio:
//example4.js
define(function(){
this.x = ...
this.y = ...
});
Nota: io non sono sicuro di questo ultimo. Indagare la variabile this
all'interno della funzione passata a require()
dice che è uguale a window
che può essere la risposta alla mia domanda, ma non sono stato in grado di trovare alcuna documentazione che menzioni il contesto in cui la funzione passata è in esecuzione. Dopo tutto, forse sta funzionando nel contesto della variabile globale?
questa è una buona idea, ma mi chiedo ancora se esiste un meccanismo all'interno della funzione 'define()' che non richiede l'incorporamento del mio codice in una funzione di chiamata immediata? – AlexStack