dojo.hitch: 当调用对象方法时,给他添加一个上下文对象,即this指向的obj。
1、一般传两个参数,第一个是上下文参数,第二个是函数或对象的方法,如果没有第一个参数,则默认为全局
如:
function showData(){
var x= this.getData();
dojo.byId("showData").innerHTML = "The result " + x;
}
var dataSrc1 = {
value:0,
getData:function(){return this.value++;}
};
var dataSrc2 = {
value:0,
getData:function(){return this.value++;}
};
dojo.byId("f3").onclick = dojo.hitch(dataSrc1,showData);
dojo.byId("f4").onclick = dojo.hitch(dataSrc1,showData);
2、用hitch绑定参数时必须要指定上下文和函数,在当前域中时,要给上下文指定参数 null
如: dojo.byId("someId").click=function(){handler(someArg);}
等同于 dojo.byId("someId").click=dojo.hitch(null,handler,someArg);
等同于 dojo.byId("someId").click=dojo.partial(handler,someArg);
function print3Args = (a1,a2,a3){
alert(a1+a2+a3);
}
用dojo.hitch绑定2个参数
var printArg = dojo.hitch(null,print3Args ,"this","is");
printArg(easy);
输出:this is easy
数组方法:
例:循环控制语句,利用dojo消除重复代码
dojo.indexOf: 返回数组中首次匹配元素的位置,没有找到返回-1.
dojo.lastIndexOf: 返回数组中最后一次匹配元素的位置,没有找到返回-1.
dojo.every: 测试是否数组中所有元素都返回测试函数,返回true或者False.
dojo.some:测试数组中是否有元素返回测试函数,返回true或者False.
dojo.filter: 创建一个数组中所有通过过滤函数的元素组成的新数组。
dojo.map: 返回对数组中所有元素依次调用一个函数得到的返回值构成的新数组。
dojo.forEach: 将数组中每一个元素传给一个函数。
上述函数都具有相同的签名:(a,f,context)
a:代表一个数组 f:回调函数 context:表示执行f的上下文(可选)。
回调函数也有相同的签名:(item,index,array)
item:当前迭代中的数组元素
例如:var acumulator = {"total",0};
var src=[1,2,3,4,5];
dojo.forEach(src,"this.total+=item;",acumulator);