如何在 Javascript 中使用 DOJO 创建静态 class
How do I create a static class using DOJO in Javascript
我正在尝试在 JavaScript 中创建一个实用程序 class 并且正在使用 Dojo 框架。我在这里找不到任何关于如何在 Dojo 框架内正确创建静态 class 的信息。我不想每次都创建一个新的 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 而不是旧版代码
正如其中一条评论中提到的,您根本不需要 "class" 来完成您的要求。这是 Java 脚本,而不是 Java 或 C# 等
您只需要定义一个模块,其中 returns 具有实用功能的对象。
define([], function () {
return {
clearTextBox: function (id) {
document.getElementById(id).value = '';
}
};
});
这是一种非常普遍的做法,甚至被 Dojo 本身用于 dojo/_base/array
、dojo/_base/lang
和 dojo/date
等实用模块。
这也不会每次都创建一个新对象,因为每个 AMD 模块只加载一次,并且它的工厂函数只执行一次。
Dojo 是一个工具包,而不是一个框架,通常不会强迫您以某种方式做某事。不要陷入认为您创建的每个模块都需要使用 declare
的 "class" 的想法。当您需要定义具有继承功能的构造函数或混合时,请使用 declare
。
我正在尝试在 JavaScript 中创建一个实用程序 class 并且正在使用 Dojo 框架。我在这里找不到任何关于如何在 Dojo 框架内正确创建静态 class 的信息。我不想每次都创建一个新的 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 而不是旧版代码
正如其中一条评论中提到的,您根本不需要 "class" 来完成您的要求。这是 Java 脚本,而不是 Java 或 C# 等
您只需要定义一个模块,其中 returns 具有实用功能的对象。
define([], function () {
return {
clearTextBox: function (id) {
document.getElementById(id).value = '';
}
};
});
这是一种非常普遍的做法,甚至被 Dojo 本身用于 dojo/_base/array
、dojo/_base/lang
和 dojo/date
等实用模块。
这也不会每次都创建一个新对象,因为每个 AMD 模块只加载一次,并且它的工厂函数只执行一次。
Dojo 是一个工具包,而不是一个框架,通常不会强迫您以某种方式做某事。不要陷入认为您创建的每个模块都需要使用 declare
的 "class" 的想法。当您需要定义具有继承功能的构造函数或混合时,请使用 declare
。