dojo源码里,大量使用 dojo.mixin、dojo.extend、dojo.declare 三个方法。作用均为扩展dojo基类。@H_404_2@
一、dojo.mixin@H_404_2@@H_404_2@
dojo.mixin用于扩展一个实例对象,如@H_404_2@@H_404_2@
var obj = {a:1,b:2}@H_404_2@@H_404_2@
dojo.mixin(obj,{c:3,d:4})@H_404_2@@H_404_2@
那么现在的obj为{a:1,b:2,c:3,d:4}@H_404_2@@H_404_2@
二、dojo.extend@H_404_2@@H_404_2@
dojo.extend用于扩展一个类对象,在实际应用中我主要用来扩展dojo控件。如给dijit.Dialog扩展一个setTitle方法@H_404_2@@H_404_2@
dojo.extend(dijit.Dialog,{@H_404_2@@H_404_2@
setTitle:function(name){@H_404_2@@H_404_2@
this.set('title',name)@H_404_2@@H_404_2@
这样在创建Dialog对象后,就包含的 setTitle 的方法。@H_404_2@@H_404_2@
三、dojo.declare@H_404_2@@H_404_2@
dojo.declare在控件里被大量应用,原因是dojo.declare可以声明一个类,而不污染继承的类。可以用面向对象语言里的多重继承理解。比如 我要声明一个对话框类,这个对话框有特殊的样式。@H_404_2@@H_404_2@
dojo.declare(@H_404_2@@H_404_2@
dijit.Dialog,Arial'"> {@H_404_2@@H_404_2@
style:...,Arial'"> setTitle:function(...){...}@H_404_2@@H_404_2@