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-EXT到项目中,如何创建和配置组件,以及如何处理复杂的UI交互。 总之,YUI-EXT是前端开发者的强大工具,它结合了YUI的底层强大功能和自身丰富的UI组件,让开发人员能够高效地...
综上所述,"yui-yuidoc-yuidoc-50-529-gc631758" 相关的知识点涵盖了 YUI 库的模块化设计、事件处理、DOM 工具,以及 YUIDoc 如何帮助开发者生成和理解 YUI 的 API 文档。了解这些知识点对于有效利用 YUI 构建高性能...
本文将深入探讨grunt-yui-compressor的源码,解析其工作原理和核心功能。 1. **Grunt与Grunt插件** Grunt是Node.js平台下的一个自动化任务运行器,开发者可以定义一系列的任务,如编译、测试、清理等,通过简单的...
YUI-EXT开发学习帮助手册,自己收集网上资料整理的。
**yuicompressor-maven-plugin详解** `yuicompressor-maven-plugin`是一款强大的Maven插件,主要用于优化前端资源,特别是JavaScript和CSS文件。这个插件是基于YUI Compressor,一个由Yahoo开发的开源工具,它能...
本文将深入探讨yuicompressor的功能、原理及其在Idea中的应用,帮助你掌握这一前端优化神器。 首先,让我们了解什么是yuicompressor。yuicompressor是由Yahoo!公司开发的一款开源的JavaScript和CSS压缩工具,它能够...
在"YUI-ajax框架开发文档"中,我们可以深入探讨YUI如何通过其Ajax组件实现异步数据通信。 YUI中的Ajax框架主要由`YAHOO.util.Connect`和`YAHOO.widget.DataSource`两个关键部分组成。`YAHOO.util.Connect`是YUI的...
在本文中,我们将深入探讨名为"ore.yui"的Python库,特别是其0.4.1版本,该库被打包为"ore.yui-0.4.1.tar.gz"文件。 "ore.yui"库很可能是一个开源项目,因为大多数Python库都会遵循开放源代码的精神,允许开发者...
**Ajax(yui-slideshow)详解** Ajax,全称Asynchronous JavaScript and XML,是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,提升了用户...
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...
npm install yui-compressor ``` 安装完成后,可以使用以下命令对JavaScript或CSS文件进行压缩: ```bash java -jar path/to/yuicompressor.jar --type js input.js -o output.min.js java -jar path/to/yui...
yui compressor 2.4.6 发布日期:2011-04-15 用例: java -jar yuicompressor-2.4.6.jar myfile.js -o myfile-min.js
"eclipse yuicompressor-maven-plugin"是Maven生态系统中的一个插件,专门用于这个目的。下面将详细阐述这个插件的功能、用法以及它在Maven项目中的应用。 ### 1. Maven简介 Maven是一个强大的项目管理和综合工具,...
《深入理解YUI3:基于yui3-master.zip的探讨》 YUI(Yahoo! User Interface Library)是由雅虎公司开发的一套开源JavaScript库,它为Web开发者提供了丰富的功能和工具,以创建交互性强、性能优秀的网页应用。YUI3是...
yuicompressor-maven-plugin, 用于压缩 (Minify/Ofuscate/Aggregate) Javascript文件和使用 YUI 压缩器的CSS文件的Maven 插件 [[Flattr this git repo] ( http://api.flattr.com/button/flattr-badge-large.png)]...
#酒店价格日历 ####基于YUI3开发的价格日历组件 @name:Y.PriceCalendar @requires:['node', 'base-base', 'event-mouseenter']
压缩工具YUI-compressor 压缩工具层次不穷,各有优点,选择适合的压缩工具为将来做项目开发使用是一件很重要的事情!!在这介绍YUI-compressor