dojo.declare(class,superclass, props) :返回一个构造函数
class:类名,字符串类型
superclass:父类,若无父类则为null;Function类型
props:属性和方法对象,即为作为原型中包含的属性和方法;其中一个关键的函数constructor是本类的初始化函数
例如:
dojo.declare("my.classes.bar", my.classes.foo, {
// properties to be added to the class prototype
someValue: 2,
// initialization function
constructor: function(){
this.myComplicatedObject = new ReallyComplicatedObject();
},
// other functions
someMethod: function(){
doStuff();
}
);
先执行父类的构造函数,接下来是本类的constructor方法,constructor方法可以重写父类的属性值,所以constructor需要包含了父类构造方法的参数。
dojo.extend(constructor,props):一个对象的所有属性与方法会被加到构造函数的原型中,使得该构造器的所有实例都能够使用它们。
例如:
var A = dojo.declare(null, {
m1: function(){},
s1: "Popokatepetl"
});
Dojo.extend(A,{
m1: function(){},
m2: function(){},
f1: true,
d1: 42
});
dojo.mixin(obj,props):一个对象props的所有属性与方法会加到另一个对象obj中,只拷贝原属性的成员,不拷贝原型中的成员。若obj中的属性与props的有相同,会被覆盖掉。
dojo.declare("acme.Base", null, {
constructor: function(properties){
// property configuration:
dojo.mixin(this, properties);
}
});