WEB开发网
开发学院软件开发Java 掌握 Dojo 工具包,第 7 部分: Dojo 的扩展 阅读

掌握 Dojo 工具包,第 7 部分: Dojo 的扩展

 2009-11-06 00:00:00 来源:WEB开发网   
核心提示: Dojo.declare 模拟了 class based 继承机制中大部分特性,但是仍然有些地方还不够完善,掌握 Dojo 工具包,第 7 部分: Dojo 的扩展(5),比如清单 2 中最后两行代码是测试 jh1 的类型,按照 class based 继承,也就是说,Dojo 并不会一开始就把

Dojo.declare 模拟了 class based 继承机制中大部分特性,但是仍然有些地方还不够完善,比如清单 2 中最后两行代码是测试 jh1 的类型,按照 class based 继承,jh1 应该即是 JetPlane 类型,又是 Helicopter 类型,但是测试结果中 jh1 只是 JetPlane 型,而不是 Helicopter 型。因为在多重继承时,虽然在 dojo.declare 的第二个参数可以指定多个父类,但是只有第一个父类是真正的父类,其他的都不是,所以 jh1 只是 JetPlane 型。

此外使用 Dojo.declare 时需要注意第三个参数中的 constructor 函数的参数顺序,这关系到父类对象的属性是否能被正确初始化。在清单 2 的代码中,JetoHelicopter 并没有显式调用 JetPlane 或 Helicopter 的 constructor 函数,但是父类的属性依然能被正确的初始化。这是因为 dojo.declare 在调用 JetoHelicopter 的 constructor 函数时会先调用 JetPlane 和 Helicopter 的 constructor 函数,并把所有的参数传递给他们,而被调用的函数是按顺序接收所有传进来的参数,多余的参数会被忽略掉。所以 Helicopter 的 constructor 函数的参数中,有一个 placeholder,这个 placeholder 参数仅仅是为了占个位置,以使得来自 JetoHelicopter 的第 5 个参数 propeller 能正确的传递给 Helicopter 的 constructor 的第 5 个参数。

Dojo.declare 这些“瑕疵”是由 JavaScript 语言的特性造成的,dojo.declare 提供的功能已经很强大,开发人员大可不必纠缠于这些细节,重要的是使用 dojo 开发出漂亮的应用。

Dojo 的模块化

在本系列文章的第一部分就提到,Dojo 是基于“包”结构进行组织的,就像面向对象语言一样。严格意义上来讲,这个“包”并非 java 中 package,Dojo 的官方文档中称之为模块 (Module),但在使用中,却与 java 或 C# 很像,这样做的好处之一是使得熟悉面向对象的编程人员能够很快熟悉 Dojo;另外,模块化把 Dojo 的代码按照功能划分为不同的逻辑单元;最后也是最大的好处是,Dojo 引擎可以实现按需载入,也就是说,Dojo 并不会一开始就把所有的功能都载入到客户端的浏览器上,它只会把用到的模块发送给客户端。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:掌握 Dojo 工具包

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接