跟燕青一起学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.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中去。

 

【参考】

  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的名字空间

 

 

Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.