如何在 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/arraydojo/_base/langdojo/date 等实用模块。

这也不会每次都创建一个新对象,因为每个 AMD 模块只加载一次,并且它的工厂函数只执行一次。

Dojo 是一个工具包,而不是一个框架,通常不会强迫您以某种方式做某事。不要陷入认为您创建的每个模块都需要使用 declare 的 "class" 的想法。当您需要定义具有继承功能的构造函数或混合时,请使用 declare