Dojo 学习笔记–dojo模块引用 和上下文绑定

1. dojo 的模块化

dojo 的模块化是指,dojo将每个冗杂的js代码有组织的分割开,划分为模块,需要该模块时,将其引入,即可使用,这个类似于在java代码里的 import 语句;

比如我们需要dojo.a.b 模块,只需要执行下面的语句:

require("dojo.a.b");  // 实际上这个是相当于加载dojo/a/b.js 文件

2dojo.hitch()

此方法为指定的函数绑定上下文,并执行。

function printAge()
{ 
     console.log(age);
}
var girl = {
       age:20
}
var woman = {
      age:40
}

dojo.hitch(girl,printAge);      // 为printAge 绑定girl上下文,输出:20;
dojo.hitch(woman,printAge);      //为printAge 绑定woman 上下文 ,输出 40;

//dojo.hitch 的实质:
dojo.hitch(o,f); //o 是对象,f是函数
//等价于
function (){ return f.apply(o,arguments)};
function() { return f.call(o,.....) };

dojo.hitch跟空对象绑定的情况:

// dojo.global 是对全局对象空间的一个引用
//第一种形式
dojo.hitch(null,f);  //  f 是一个函数,等价于
dojo.hitch(f);  // 返回 f


//第二种形式
dojo.hitch(null,"f");  // 等价于
dojo.hitch("f");  //返回..
function() {return dojo.global[f].apply(dojo.global,arguments);}

dojo.hitch() 的一般语法:

dojo.hitch(context,functionName,arg1,arg2,arg3.......);
//等价于:
function(){
       return context,functionName.apply(
       context,[arg1,arg3....].concat(arguments)  
    );
};
};

相关文章

我有一个网格,可以根据更大的树结构编辑小块数据.为了更容易...
我即将开始开发一款教育性的视频游戏.我已经决定以一种我可以...
我正在使用带有Grails2.3.9的Dojo1.9.DojoNumberTextBox小部...
1.引言鉴于个人需求的转变,本系列将记录自学arcgisapiforja...
我正在阅读使用dojo’sdeclare进行类创建的语法.描述令人困惑...
我的团队由更多的java人员和JavaScript经验丰富组成.我知道这...