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();
Run Code Online (Sandbox Code Playgroud)
我正在玩javascript命名空间,并遇到了意外的行为.我主要在IE中开发,因为它是我们的Intranet应用程序的目标浏览器.
在上面的IE中,当包含在空白页面上时,输出:
你好凯文
你好Caoimhin
在FF中,脚本遇到错误:
getMyPublicName未定义
如果我注释掉违规行:
//document.writeln("hello " + getMyPublicName() + "<br/>");
Run Code Online (Sandbox Code Playgroud)
FF输出:
你好Caoimhin
所以我知道它可以访问私有功能......
任何人都可以解释为什么会这样吗?我需要做的是为了拥有类似于上面的跨浏览器解决方案..
我知道我可以这样写:
document.writeln("hello " + utils.messages.getMyPublicName() + "<br/>");
Run Code Online (Sandbox Code Playgroud)
但不愿意......
凯文,提前谢谢