在跟燕青一起学Windows8应用开发:使用WinJS自定义Javascript类一文中,笔者已经讲述了如何使用WinJS定义Javascript的类,那么在本篇博客中,笔者将讨论如何使用WinJS的WinJS.Namespace.define函数定义名字空间(Namespace)。
名字空间对于熟悉C/C++、Java等高级语言的人来说是非常熟悉的。它的主要好处在于避免不同源代码之间变量、类名等名字冲突。优秀的Javascript代码,也需要对自己的代码命名进行管理。非常棒,WinJS也提供了这种管理机制!在跟燕青一起学Windows8应用开发:使用WinJS自定义Javascript类一文中,笔者已经定了People和Man两个类,但它需要做两件事情:
l 将它用名字空间包装
l 让它在其他Javascript代码中可见。
本篇博客以此话题进行展开,看看名字空间是如何搞定我们的需求的?
例子依然使用Study Metro App项目,并且通过图1,图2,图3创建一个People类,图4,图5,图6搞定Man类。
打开Study Metro App项目,鼠标右键js文件夹,依次选择Add子菜单àNew Item…子菜单,如图1所示。

图1
依次选择Javascrip菜单àJavascript File菜单,在Name中输入People.js文件名,再点击Add按钮,如图2所示。

图2
在People.js中定义People类,如图3所示。

图3
鼠标右键js文件夹,依次选择Add子菜单àNew Item…子菜单,如图4所示。

图4
依次选择Javascrip菜单àJavascript File菜单,在Name中输入Man.js文件名,再点击Add按钮,如图5所示。

图5
在Man.js中定义Man类,如图6所示。

图6
在定义好People类和Man类之后,我们需要将它加入到default.html中,如图7所示。

图7
运行一下,看看是什么情况?

图8
没错,对于Man而言,People是局部类定义,Man是无法看见的,那如何解决呢?
让我们看看本篇博客的标题!没错,名字空间可以解决此问题:-)。
微软的WinJS.Namespace.define函数轻松的搞定了我们的麻烦,图9显示了它优雅的简洁性!

图9
到这里,Man类看上去还有两个问题:
l 如何使用带有名字空间的People类?
l 如何将自己也加入到MySpace的名字空间内(People现在被定义在MySpace的名字空间内)?
不着急,先看看图10的实现。

图10
非常简单吧!仅仅在People类的签名加上MySpace的修饰就搞定了People的引入。
嗯…
你还在想什么?哦,是不是对再次定义MySpace感觉有些奇怪。是不是感觉它定义后会将People类从MySpace空间冲掉?
真的是这样吗?o(∩_∩)o 哈哈
这个就当作本篇博客的作业题吧!
【参考】
1. 跟燕青一起学Windows8应用开发:创建HTML5 Metro应用程序
2. 跟燕青一起学Windows8应用开发:安装Visual Studio 2011
3. 跟燕青一起学Windows8应用开发:安装Windows8操作系统
4. 跟燕青一起学Windows8应用开发:用CSS文件妆点你的应用
5. 跟燕青一起学Windows8应用开发:使用HTML+CSS自适应水平方向分辨率
6. 跟燕青一起学Windows8应用开发:使用HTML+CSS自适应垂直方向分辨率
7. 跟燕青一起学Windows8应用开发:使用HTML+CSS制作居中布局
8. 跟燕青一起学Windows8应用开发:使用HTML+CSS制作三角形
9. 跟燕青一起学Windows8应用开发:使用HTML+CSS制作Bubbles
10. 跟燕青一起学Windows8应用开发:使用WinJS自定义Javascript类
