跟燕青一起学Windows8应用开发:使用WinJS在已有Namespace中添加新成员

在跟燕青一起学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.jsMS2.js放入default.html内,并且定义textarea来展示window.MS1windows.MS2的对比后差别,如图3所示。

3

 

ClickMe按钮触发比较动作,比较的代码放于ClickMe()函数内,如图4所示。

 4

 

运行整个程序,点击ClickMe按钮,请看图5结果。

5

对图5结果的简单总结:

l  用相同名字空间调用多次WinJS.Namespace.define不会将以前定义的内容冲掉,它是一个加操作。

l多次调用WinJS.Namespace.define所产生的Namespace对象是不同的,但是在其空间内包含所有先后定义的成员,并且每个成员共享一份存储空间(都是引用)。比如说,对MS1.desc的改动,必将影响到MS2.desc,它们是同一个数据对象。

 

结论的有益启发:

lNamespace中有多个类,可以将它们分别写在不同的文件中,然后分别使用WinJS.Namespace.define将其逐一加入同一个Namespace中去。

 

【参考】

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

11.     跟燕青一起学Windows8应用开发:使用WinJS自定义Javascript的名字空间

 

 

 

Einzelheiten zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.