这个模式缩放的很好。通过这种方式,它避免了全局命名空间,提供了对外的可以访问的API方法,支持受保护或“私有”的数据和方法。
- 原文:《a javascript module pattern》。这是在YUI blog上的,有的地方可能打不开,可以搜一下英文的转载或者利用搜索引擎的缓存也能看。
- 《A JavaScript Module Pattern - JavaScript的一种模组模式》这是别人的翻译,参考了不少,不过感觉挺不方便看的,这是我翻译的这篇文章的一个原因,当然最主要的原因是这篇文章算是学习YUI的最基础的文章了,整个YUI的模块模式都基于此。
YAHOO.myProject.myModule = function () { //“私有”变量: var myPrivateVar = “我仅能在YAHOO.myProject.myModule内被访问。”; //私有方法: var myPrivateMethod = function () { YAHOO.log(”我仅能在YAHOO.myProject.myModule内被访问。”); }
return { myPublicProperty: “我作为YAHOO.myProject.myModule.myPublicProperty能被访问。” myPublicMethod: function () { YAHOO.log(”我作为YAHOO.myProject.myModule.myPublicMethod能被访问。”); //在myProject,我能访问私有的变量和方法 YAHOO.log(myPrivateVar); YAHOO.log(myPrivateMethod()); //myPublicMethod的原生作用域是myProject,我们可以用“this”来访问公共成员。 YAHOO.log(this.myPublicProperty); } }; }(); |