var utils = function() {
function getMyPrivateName() {
return "Caoimhin";
}
return {
messages: {
getMyPublicName: function getMyPublicName() {
return "Kevin";
},
sayHello: function() {
document.writeln("hello " + getMyPublicName() + "<br/>");
document.writeln("hello " + getMyPrivateName() + "<br/>");
}
}
};
}();
utils.messages.sayHello();
Je joue avec les espaces de noms javascript et j'ai rencontré un comportement inattendu. Je développe principalement dans IE car c'est le navigateur cible pour notre application intranet.Javascript + namespacing + numéro FF
Dans IE ce qui précède, lorsqu'il est inclus sur une page blanche, sorties:
hello Kevin
hello Caoimhin
Dans FF le script rencontre une erreur:
getMyPublicName is not defined
Si je commente la ligne incriminée:
//document.writeln("hello " + getMyPublicName() + "<br/>");
Sorties FF:
hello Caoimhin
Je sais que cela peut accéder à la fonction privée ...
Quelqu'un peut-il expliquer pourquoi cela se produit? Et ce que je dois faire pour avoir une solution cross navigateur similaire à celui ci-dessus ..
Je sais que je pourrais écrire quelque chose comme:
document.writeln("hello " + utils.messages.getMyPublicName() + "<br/>");
mais je préfère ne pas ....
Merci à l'avance, Kevin
Merci pour l'explication détaillée, quelques bonnes informations ici pour moi. – Kevin