j'ai écrit un script comme ça:Pourquoi ma fonction JavaScript n'est-elle pas capable d'accéder aux fonctions/variables de portée globale définies dans mes autres fichiers .js?
NS.load = function(src) {
var script = document.createElement("script").setAttribute("src", src);
document.getElementsByTagName("head")[0].appendChild(script);
}
Il charge les fichiers mais je ne peux pas accéder à des fonctions et des variables defiened dans d'autres fichiers.
//js/main.js
var qux = {name: "name"};
NS.load("js/foo.js");
//js/foo.js
alert(qux.name); //undefined variable
Mais si je définis qux comme ceci:
window.qux = {name: "name"};
je peux atteindre qux variable dans d'autres modules. Pour autant que je sache, tous les globals sont déjà membres de l'objet window. Alors pourquoi je dois définir des variables comme celle-ci. Pourriez-vous proposer une autre méthode?
Merci.
Merci Langdon. Le code original est identique au vôtre. Je l'ai coupé pour la brièveté. Mais je ne connaissais pas la valeur de retour de setAttribute(). C'est bon d'apprendre ça. – jsonx
jsonx, vérifiez mon édition. – Langdon
Votre code fonctionne. "Quel genre d'environnement utilisez-vous votre code?" C'est la question et la réponse. Maintenant j'ai compris. En fait mon code loader est dans la méthode ready de jQuery, ainsi je dois lier des variables à l'objet window pour atteindre d'autres modules. Merci Langdon. – jsonx