在跟燕青一起学Windows8应用开发:使用WinJS自定义Javascript的名字空间一文中,笔者已经讨论了如何用Namespace解决两个技术问题:
l 局部类定义全局化的问题。
l 多项目中代码名字冲突问题。
在博客后,笔者也留有一道思考题:在多次使用WinJS.Namespace.define定义相同名字的Namespace会出现什么情况?本篇博客就是讨论它的实际结果。
打开Study Metro App项目,建立MS1.js文件,并实现它的内容,如图1所示。
图1
图1的内容概要:定义一个局部变量desc,并且将它放入名字空间MySpace内。此外,Namespace的对象放入window.MS1中。
简历MS2.js,并实现它的内容,如图2所示。
图2
图2内容概要:定义size局部变量,并且将其放入名字空间MySpace内。此外,产生的Namespace对象放入window.MS2中。
将MS1.js和MS2.js放入default.html内,并且定义textarea来展示window.MS1和windows.MS2的对比后差别,如图3所示。
图3
ClickMe按钮触发比较动作,比较的代码放于ClickMe()函数内,如图4所示。
图4
运行整个程序,点击ClickMe按钮,请看图5结果。
图5
对图5结果的简单总结:
l 用相同名字空间调用多次WinJS.Namespace.define不会将以前定义的内容冲掉,它是一个加操作。
l 多次调用WinJS.Namespace.define所产生的Namespace对象是不同的,但是在其空间内包含所有先后定义的成员,并且每个成员共享一份存储空间(都是引用)。比如说,对MS1.desc的改动,必将影响到MS2.desc,它们是同一个数据对象。
结论的有益启发:
l 在Namespace中有多个类,可以将它们分别写在不同的文件中,然后分别使用WinJS.Namespace.define将其逐一加入同一个Namespace中去。
【参考】
- 跟燕青一起学Windows8应用开发:创建HTML5 Metro应用程序
- 跟燕青一起学Windows8应用开发:安装Visual Studio 2011
- 跟燕青一起学Windows8应用开发:安装Windows8操作系统
- 跟燕青一起学Windows8应用开发:用CSS文件妆点你的应用
- 跟燕青一起学Windows8应用开发:使用HTML+CSS自适应水平方向分辨率
- 跟燕青一起学Windows8应用开发:使用HTML+CSS自适应垂直方向分辨率
- 跟燕青一起学Windows8应用开发:使用HTML+CSS制作居中布局
- 跟燕青一起学Windows8应用开发:使用HTML+CSS制作三角形
- 跟燕青一起学Windows8应用开发:使用HTML+CSS制作Bubbles
- 跟燕青一起学Windows8应用开发:使用WinJS自定义Javascript类
- 跟燕青一起学Windows8应用开发:使用WinJS自定义Javascript的名字空间
图标图像:
![](http://software.intel.com/sites/default/files/default_images/search_publish_icon.jpg)