我正在尝试使用JavaScript创建一个Utility类,并且正在使用Dojo框架。我无法在这里找到关于如何在Dojo框架内正确创建静态类的任何地方。我不想每次都要创建一个新的Utility对象。我宁愿不使用Singleton。
我目前有类似的东西......
//Util.js
define(["dojo/_base/declare",
"dojo/domReady!"], function (declare) {
return declare(null, {
//Pass in string format of element's ID
clearTextBox: function (elemID) {
document.getElementById(elemID).value = "";
}
});
});
注意:我使用的是AMD而非传统代码
答案 0 :(得分:6)
正如其中一条评论中提到的那样,你根本不需要一个“课堂”来做你要求的。这是JavaScript,而不是Java或C#等。
您只需要定义一个返回具有效用函数的对象的模块。
define([], function () {
return {
clearTextBox: function (id) {
document.getElementById(id).value = '';
}
};
});
这是一种非常常见的做法,甚至由Dojo本身用于dojo/_base/array
,dojo/_base/lang
和dojo/date
等实用程序模块。
这也不会每次都创建一个新对象,因为每个AMD模块只加载一次,其工厂函数只执行一次。
Dojo是一个工具包,而不是一个框架,通常不会强迫你以某种方式做某事。不要误以为您创建的每个模块都需要使用declare
成为“类”。当需要使用继承功能定义构造函数或mixin时,请使用declare
。