Domanda
il mio obiettivo è creare una sorta di " Libreria Javascript, " se potessi chiamarlo così. Ho intenzione di usarlo per manipolare le pagine mentre navigo sul web, caricandolo in modo dinamico come uno script greasemonkey. L'idea è di avere & Quot; win
& Quot; viene mappato su window
, " doc
" - gt &; document
, " win.loc
" - gt &; win.location
e alcune altre mappature utili, ma hai l'idea. Puoi darmi solo alcuni esempi da cui ritirare la sintassi e io estrapolerò il resto? Grazie mille.
Soluzione
Assegna semplicemente le variabili in questo modo:
var win = window;
var doc = document;
Non puoi assegnare win.loc
senza modificare l'oggetto window
in questo caso però. Inoltre, l'oggetto finestra è speciale perché dopo aver assegnato win
, sarai in grado di ottenerlo con win.win
o win.win.win
e così via (loc
è l'oggetto globale.)
In ogni caso, puoi ancora assegnare <=> all'oggetto <=>:
win.loc = window.location;
// Can now be referenced as:
loc; // (window is the global object)
win.loc;
win.location;
window.location;
Ecco come fare quello che stai chiedendo. Molto probabilmente non dovresti farlo. Normalmente, i framework sono definiti per utilizzare solo una variabile globale, con un nome adatto:
var Blixt = (function () {
var localVariable = 123;
return {
loc: window.location,
myFunc: function () {
alert(localVariable);
}
};
})();
Tutto ciò è piuttosto complesso se non hai familiarità con JavaScript, quindi non è un buon progetto per iniziare se non conosci JavaScript.
Altri suggerimenti
** NOTA: ** Questa è in realtà una richiesta di chiarimento della risposta di Blixt sopra, che non rientrerebbe in un commento.
Ok, grazie - questa è una risposta abbastanza buona. Vorrei solo fare alcuni chiarimenti:
-
Se definisco gli alias usando la sintassi che hai indicato sopra,
win.loc
si comporteranno esattamente lo stesso diwindow.location
senza eccezioni? (Solo assicurandomi) -
L'ho seguito per la maggior parte, ma non ho capito la parte con la funzione
Blixt
. Qual è il comportamento / risultato atteso dalla definizione di questa funzione? -
I am kinda sono nuovo in JS, ma perché non è una buona idea? Quali conseguenze negative potrebbe avere? Sto solo cercando di fare cose come
C-l javascript:win.loc=doc.ref<ENTER>
per una scheda che è stata aperta facendo clic CTRL su un collegamento in un'altra scheda, niente di troppo complesso. -
A proposito, e ho la sensazione che questo potrebbe essere diverso da browser a browser, ma c'è un modo per me di definire uno schema URI
js:
e mapparlo ajavascript:
? Grazie per l'ottima risposta.