声明类
为什么连接如此重要?您将在声明 Dojo 类或创建自己的部件时体验到它的重要性。Dojo 的一大功能就是能够通过使用 dojo.connect 函数和内置的 pub/sub 模型将对象 “连接” 起来。
类的声明需要三个对象:
◆一个惟一的类名
◆用于扩展函数的父类(以及模拟多个继承的 “混合” 类)
◆定义所有属性和函数的 hash
清单 4 展示了最简单的类声明方式,清单 5 展示了该类的实例化。
清单 4. 基本的类声明
dojo.declare( "myClass", null, {} ); |
清单 5. 基本的类实例化
var myClassInstance = new myClass(); |
如果希望声明一个 “真正的”(即有用的)Dojo 类,那么一定要理解构造函数。在 Java 代码中,您可以通过使用各种不同的签名声明多个重载的构造函数,从而支持实例化。在一个 Dojo 类中,可以声明一个 preamble、一个 constructor 和一个 postscript,但是在大多数情况下,您只需要声明一个构造函数。
除非混合使用了其他类来模拟多个继承,否则不需要用到 preamble,因为它允许您在 constructor 参数传递给扩展类和混合类之前对其进行处理。
postscript 产生了 Dojo 小部件生命周期方法,但对标准 Dojo 类没有什么用处。
不一定要全部都声明,但是要将所有值传递到类的实例中,就必须将 constructor 函数声明为 minimum。如果 constructor 参数将被该类的其他方法访问,必须将它们赋值给已声明的属性。清单 6 展示了一个类,它只将其中一个 constructor 参数赋值给一个类属性,并尝试在另一个方法中引用它们。
清单 6. 赋值构造函数参数
dojo.declare( "myClass", null, { arg1 : "", constructor : function(arg1, arg2) { this.arg1 = arg1; }, myMethod : function() { console.log(this.arg1 + "," + this.arg2); } } ); var myClassInstance = new myClass("foo", "bar"); myClassInstance.myMethod(); |
图 2. 赋值构造函数参数的结果
责任编辑:小草