Type 的内容也非常多,我觉得两个很常用:
- Type.registerNamespace(namespacePath[, baseArguments])
- classInstanceVar.registerClass(typeName[, baseType[, interfaceTypes]])
分别用以创建一个名称空间和注册一个类。用示例来说明:
Type.registerNamespace("Samples");
Samples.A = function () { this.name = "来自类 A"; }
Samples.B = function () { Samples.B.initializeBase(this); }
Samples.C = function () { this.name = "来自类 C" }
Samples.A.registerClass("Samples.A");
Samples.B.registerClass("Samples.B", Samples.A);
Samples.C.registerClass("Samples.C");
var a = new Samples.A();
var b = new Samples.B();
var c = new Samples.C();
alert(a.name + "," + b.name + "," + c.name);
结果为:来自类 A,来自类 A,来自类 C。可以看出 B 继承自 A 了,它是怎么实现继承的呢?如下:
- 在派生类的第一行调用 initializeBase,第一个参数表示要初始化谁的基类,所以通常是 this。第二个参数为基类构造函数的参数。
- registerClass 时指定基类类型,是类型,所以没有引号。
上述示例经过了测试,MSDN 上有几个示例有误。
相关阅读