代码改变世界

JavaScript基础对象创建模式之声明依赖模式(023)

2014-09-17 00:12  Bryran  阅读(238)  评论(0编辑  收藏  举报

运用了命名空间(Namespace)模式后, 就可以使用一些JavaScript库了,比如YAHOO作用YUI2库的全局对象,可以通过 YAHOO.util.Dom 和 YAHOO.util.Event得到YUI2库中有关Dom和事件的支持。在程序中使用这些模块就是声明依赖(Declaring Dependencies)模式:

var myFunction = function () {
    //dependencies
    var event = YAHOO.util.Event,
        dom = YAHOO.util.Dom;
    //use event and dom variables
    //for the rest of the function...
};
这是一种极简单的模式,但却可带来许多好处:
  • 明确使用全局对象中声明的模块,使得开发人员记得引用这些库文件;
  • 在代码块的最上方声明对象的引用,使得引用容易被找到;
  • 使用一个本地的变量,能解决对象嵌套引用时的性能问题;
  • 许多代码缩小(minification)的工具都支持对本地变量名的缩小;
如果不使用这种模式,代码缩小时有着不同的效果:
function test1() {
    alert(MYAPP.modules.m1);
    alert(MYAPP.modules.m2);
    alert(MYAPP.modules.m51);
}
/*
minified test1 body:
alert(MYAPP.modules.m1);alert(MYAPP.modules.m2);alert(MYAPP.modules.m51)
*/
function test2() {
    var modules = MYAPP.modules;
    alert(modules.m1);
    alert(modules.m2);
    alert(modules.m51);
}
/*
minified test2 body:
var a=MYAPP.modules;alert(a.m1);alert(a.m2);alert(a.m51)
*/