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();
我在玩JavaScript的命名空间,并遇到意外的行为。我主要在IE中开发,因为它是我们Intranet应用程序的目标浏览器。Javascript + namespacing + FF问题
在IE以上,包括一个空白页上时,输出:
hello Kevin
hello Caoimhin
在FF脚本遇到一个错误:
getMyPublicName is not defined
如果我注释掉有问题的行:
//document.writeln("hello " + getMyPublicName() + "<br/>");
FF输出:
hello Caoimhin
所以我知道它可以访问私有函数...
任何人都可以解释为什么这是怎么回事?我需要为了有类似上述一个跨浏览器的解决方案做..
什么我知道我可以写的东西,如:
document.writeln("hello " + utils.messages.getMyPublicName() + "<br/>");
,但宁愿不....
在此先感谢, 凯文
感谢您的详细解释,这里有一些很棒的信息给我。 – Kevin 2009-12-03 04:28:14