dojo/_base/declare模块

来源:互联网 发布:java true false类型 编辑:程序博客网 时间:2024/04/30 08:30

该模块用于声明一个类,模仿java创建类方式。

declare(className,superclass,props);第一个参数可以省略,后面两个参数是必须的。第二个参数值可以为null.

声明的格式:

var myclass=declare(null,{});或者declare("myclass",null,{});

上面哪种声明的格式都是可以的,我一般用第一种。

      注解:该类的第三个参数,对象其实是js中的prototype(原型对象),用于创建类时的继承。


例如:

创建一个类,包含一个构造方法,类似java中的类。

var myClass=declare(null,

{

a:12,

id:"第一个类",

constructure:function(name,age)

{

this.name=name;

this.age=age;

}

myfun:function(value)

{

this.value=value;

}

});

var myClass2=declare(myClass,

{

id:"第二个类"

});


在例子中创建了myClass、myClass2两个类,myClass2继承了myClass。

1.在myClass中可根据构造函数创建对象var obj1=new myClass("小李",20);,创建对象后,对象中就会出现新的初始化的属性。

2.可以不同过构造函数直接创建对象,var obj2=new myClass();这样创建后就不会出现新的属性。

   详细分析:在创建的类的第三个参数是prototype对象,

myClass类中的原型对象为:

{

a:12,

id:"第一个类",

constructure:function(name,age)

{

this.name=name;

this.age=age;

}

myfun:function(value)

{

this.value=value;

}

}

myClass2的原型对象:

{

id:"第二个类"

}

  其实,一个类中的属性和方法由两部分组成,

1.一部分是外部定义的属性和方法,不能用于继承,可以说成私有的属性和方法。

例如;this.name="";this.myfun=function(){}形式,

2.另一部分是内部定义的属性和方法,即原型对象,用于继承。可以说成一般的属性和方法。

declare()方法中的第三个参数对象就是原型对象。

通过类创建对象后两部分的属性和方法都可以调用。与js中创建类的方法原理是相同的。



原创粉丝点击