dojo1.7通译 定义类(Classy JavaScript with dojo/_base/declare)

dojo1.7翻译定义类(Classy JavaScript with dojo/_base/declare)原文地址:http://dojotoolkit.org/documen

dojo1.7翻译 定义类(Classy JavaScript with dojo/_base/declare)

原文地址:http://dojotoolkit.org/documentation/tutorials/1.7/declare/

?

dojo/_base/declare模块是一个创建类的基础模块。他可以用来通过多继承创建灵活的类。dojo,dijit,和dojox都是使用了decalre。

?

开始

请确保你已经了解了模块的相关知识。

?

通过dojo创建基本的类

declare功能是在dojo/_base/declare模块中定义的。它接收三个参数className,superClass,properties

?

ClassName

这个属性声明了一个类名,声明后,名子将被放入到全局范围。className可以使用继承类声明。

?

有名子的类

?this.inherted

全部的重写父类的方法当然是可行的,但有的时候在构造函数中使用继承链可以有效的保护原有的功能。这也就是this.iinherited(XXX)这个方法的作用。这个方法调用了父类中的同名的方法

// Define class Avar A = declare(null, {    myMethod: function(){        console.log("Hello!");    }}); // Define class Bvar B = declare(A, {    myMethod: function(){        // Call A's myMethod        this.inherited(arguments); // arguments provided to A's myMethod        console.log("World!");    }}); // Create an instance of Bvar myB = new B();myB.myMethod();  // Would output://      Hello! //      World!
?

this.inheried方法可以在子类中的任何时候进行调用。

?

结论

declare是创建模块所需要的非常重要的方法。重用declare可以重创建出更多更复杂的模块结构。