js本身没有实现namespace,但是可以通过自定义来实现,Yahoo公司出品的YUI就有这个功能,你可以在YUI包build/yahoo/yahoo.js中找到相关实现。例如: 在YUI中:执行
1. YAHOO.namespace ("myspace"); 然后你就拥有了YAHOO.myspace这个名字空间,可以进行类似如下的操作:
2. YAHOO.myspace.alertHello=function() {alert("Hello");} 实质上,YUI.namespace相当于建立了一个表项,准确地说是关联数组(associative array)的一项。 我们可以用以下两句代替上面的1、2语句
1)YAHOO["myspace"]=new function(){};
2)YAHOO["myspace"].alertHello=function(){ alert("Hello");};
而且1、2与1)、2)可以交叉组合使用。 不管你使用哪种方式创建自己的名字空间,都有两种方式调用alertHello
a. YAHOO["myspace"].alertHello();
b. YAHOO.myspace.alertHello();
1、首先创建一个名为YAHOO的对象
//如果window.YAHOO对象不存在,则创建一个空的对象
var YAHOO = window.YAHOO || {};
2、命名空间YAHOO.namespace方法的实现
首先应该去了解一下什么是命名空间 。
通俗的讲,命名空间就象
java.util.DateTime,为了区别不同类中相同属性或者方法的一种以便达到唯一方法的命名。在YUI中,有YAHOO.util,YAHOO.widget,YAHOO.example等,所有的命名都以YAHOO开头。
下面就是YAHOO.namespace的实现代码:
YAHOO.namespace = function(ns) {
//如果参数ns不存在或者为"",在返回null
if (!ns || !ns.length) {
return null;
}
//将ns以"."分割成一个数组
var levels = ns.split(".");
//nsobj指向空的一个对象,等于 var nsobj = {};
var nsobj = YAHOO;
//因为YAHOO对象已经存在,如果第一个命名为"YAHOO",则跳过,从第二个开始
for (var i=(levels[0] == "YAHOO") ? 1 : 0; i<levels.length; ++i) {
//所有的命名,都作为YAHOO对象的属性存在
//如果levels[0] = "util",以下实现就相当于 YAHOO["util"] = YAHOO["util"] || {};
//如果levels[1] = "Text",以下实现就相当于 YAHOO["util"]["Text"] = YAHOO["util"]["Text"] || {};
nsobj[levels[i]] = nsobj[levels[i]] || {};
//将最后的对象返回
nsobj = nsobj[levels[i]];
}
return nsobj;
};
应用:
/*
实现过程
YAHOO["util"] = {};
*/
YAHOO.namespace("util");
/*
实现过程
YAHOO["widget"] = {}; 先实现 YAHOO.widget 对象
YAHOO["widget"]["Panel"] = {}; 再实现YAHOO.widget.Panel 对象
*/
YAHOO.namespace("widget.Panel");
分享到:
相关推荐
yui-yuidoc-yuidoc-50-529-gc631758
YUI-EXT使用详解,免费送给大家
YUI-EXT开发学习帮助手册,自己收集网上资料整理的。
前端开源库-yui-compressorYUI压缩机,绑定到YUI压缩机
grunt-yui-compressor-源码.rar
Ajax小部件yui-slideshow
js混淆 压缩 ant结合yui-compressor
yuicompressor-2.4.2.jar yuicompressor-2.4.7.jar jsZip.exe yuicompressor yui compressor js压缩工具 javascript压缩工具 css压缩工具 ------------------------------------ //压缩JS java -jar yui...
yuicompressor.jar是JS压缩工具、前端优化神器、yuicompressor-2.4.8.jar
yui compressor 2.4.6 发布日期:2011-04-15 用例: java -jar yuicompressor-2.4.6.jar myfile.js -o myfile-min.js
python库。 资源全名:ore.yui-0.4.1.tar.gz
yuicompressor-maven-plugin, 用于压缩 (Minify/Ofuscate/Aggregate) Javascript文件和使用 YUI 压缩器的CSS文件的Maven 插件 [[Flattr this git repo] ( http://api.flattr.com/button/flattr-badge-large.png)]...
yuicompressor-maven-plugin用于maven的压缩js用
yui框架集,内含多个demo,yui框架将ajax完美的包装,以及包含基于ajax的各种js组件,让开发人员可以缩短开发时间。
#酒店价格日历 ####基于YUI3开发的价格日历组件 @name:Y.PriceCalendar @requires:['node', 'base-base', 'event-mouseenter']
压缩工具YUI-compressor 压缩工具层次不穷,各有优点,选择适合的压缩工具为将来做项目开发使用是一件很重要的事情!!在这介绍YUI-compressor
我们将讲讲怎么使用Ext,来完成一些JavaScript常见的任务.这是关于Ext的入门教程。