Dojo 基本库(Dojo Base)是 Dojo 框架的核心,包含了与 Ajax 应用开发相关的核心内容,也是 Dojo 核心库(Dojo Core)、Dojo 用户界面库(Dijit)和 Dojo 扩展库(Dojox)的基础。Dojo 基本库中包含的内容比较多,下面将详细的对其中的各个模块进行介绍。与 DOM 查询和操作以及事件处理相关的内容已经在本系列中的其它文章中进行介绍,此处不再赘述。而其中与面向对象相关的内容将在其它文章中进行介绍。下面首先介绍 Dojo 基本库中包含的辅助工具方法。
辅助工具方法
在 Ajax 应用开发中,经常会需要编写一些工具方法来辅助开发,以减少代码重复。Dojo 基本库中已经为一些开发中经常会用到的功能提供了辅助方法。使用这些方法提高开发效率和代码质量。
数组处理
数组处理是 Ajax 应用开发中的常见操作。Dojo 基本库提供了一些方法用来方便的对数组进行处理,完成一些典型的任务。这些与数组处理相关的方法的具体说明如下所示:
dojo.forEach(array, callback, scope):该方法用来遍历数组并对其中的每个元素执行操作。其参数 array表示的是数组,callback表示的是对每个元素所执行操作的 JavaScript 方法,可选的 scope表示的是 callback方法调用时 this所指向的对象。callback方法在被调用时会传入三个参数,分别表示当前元素、当前元素在数组中的序号以及数组本身。
dojo.every(array, callback, scope):该方法用来判断是否数组的全部元素都满足特定的条件。其三个参数的含义与 dojo.forEach()方法相同。callback方法通过返回真假值来声明某个元素是否符合条件。
dojo.some(array, callback, scope):该方法用来判断数组中是否至少有一个元素满足特定的条件。其三个参数和 callback方法的含义与 dojo.every()相同。
dojo.map(array, callback, scope):该方法用来对数组中的每个元素执行操作,并返回一个数组包含操作的结果。其三个参数的含义与 dojo.forEach()相同。
dojo.filter(array, callback, scope):该方法用来对数组中包含的元素进行过滤,只保留满足特定条件的元素。其三个参数的含义与 dojo.forEach()相同。callback方法通过返回真假值来声明某个元素是否应该被保留。
dojo.indexOf(array, value, fromIndex, findLast):该方法用来在数组中查找指定的元素,如果找到就返回该元素在数组中的序号,否则返回 -1。其参数 array表示数组,value表示要查找的元素值,fromIndex表示查找的起始序号位置,findLast表示是否从数组末尾开始查找。
代码清单 1中给出了上述方法的使用示例。
清单 1. Dojo 基本库数组处理方式示例
var array = [2, 4, 6, 8, 10];
dojo.forEach(array, function(number, i) {
alert("第" + (i + 1) + "个数是:" + number);
});
var allEven = dojo.every(array, function(number) {
return number % 2 == 0;
});
if (allEven) {
alert("数组中全部是偶数。");
}
var hasTrimerous = dojo.some(array, function(number) {
return number % 3 == 0;
});
if (hasTrimerous) {
alert("数组中包含 3 的倍数。");
}
var tenTimes = dojo.map(array, function(number) {
return number * 10;
});
alert("数组中所有元素乘以 10:" + tenTimes.join(","));
var lessThanFive = dojo.filter(array, function(number) {
return number < 5;
});
alert("数组中小于 5 的元素:" + lessThanFive.join(","));
alert("数组中 6 的序号是:" + dojo.indexOf(array, 6));
在介绍完 Dojo 基本库中对数组的处理方式之后,下面介绍对 JavaScript 方法的处理。