如何在Javascript中使用DOJO创建静态类

如何在Javascript中使用DOJO创建静态类,javascript,dojo,static-classes,Javascript,Dojo,Static Classes,我试图用JavaScript创建一个实用程序类,并使用Dojo框架。我在这里找不到关于如何在Dojo框架内正确创建静态类的任何地方。我不想每次都创建一个新的实用程序对象。我也不想用单身汉 我现在有这样的东西 //Util.js define(["dojo/_base/declare", "dojo/domReady!"], function (declare) { return declare(null, { //Pass in string f

我试图用JavaScript创建一个实用程序类,并使用Dojo框架。我在这里找不到关于如何在Dojo框架内正确创建静态类的任何地方。我不想每次都创建一个新的实用程序对象。我也不想用单身汉

我现在有这样的东西

//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而不是旧式代码,正如其中一条评论中提到的那样,您根本不需要“类”来完成您的要求。这是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

您不喜欢使用singleton的什么地方?我想使用类似于java.util.Math的类,在其中可以在许多不同的上下文中轻松调用它。我也不存储任何状态,希望它的性能/内存优于单例。该类中使用的所有方法也将是静态的。对于这个类的所有意图和目的,使用静态类比使用单例类更有意义。我不是严格反对单例,我只是希望在这种情况下它是一个静态类。这样做怎么样?由于使用了Dojo工具包,我无法以这种方式创建一个(根据我迄今为止的尝试)。我在上面的例子中使用的实现就是我一直坚持的。这就是为什么我在寻找一种使用Dojo创建静态类的方法。只是还不确定怎么做…你的东西怎么了?注意,JS中没有类,也没有“静态”类。