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

标签 javascript dojo static-classes

我正尝试在 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 而不是旧版代码

最佳答案

正如其中一条评论中提到的,您根本不需要“类”来完成您的要求。这是 JavaScript,不是 Java 或 C# 等。

您只需要定义一个模块,它返回一个带有实用函数的对象。

define([], function () {
    return {
        clearTextBox: function (id) {
            document.getElementById(id).value = '';
        }
    };
});

这是一种非常普遍的做法,甚至被 Dojo 本身用于实用模块,例如 dojo/_base/arraydojo/_base/lang道场/日期

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

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

关于javascript - 如何在 Javascript 中使用 DOJO 创建静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31795551/

相关文章:

javascript - 使用 on() 方法获取 dojo 中复选框的值

javascript - 显示多层,ArcGIS javascript api

c# - 公共(public)引用应该如何在程序集中传递?

javascript - 在 couchdb 上构建数据的最佳方法是什么?

javascript - HTML Popup Div 到任何屏幕分辨率的屏幕中心

asynchronous - dojo 通过 for 循环延迟

java - java中静态类变量的传递

javascript - 如何使用javascript读取表单数据?

javascript - 修复循环中的闭包

c# - 在 C# 中使用作为参数传递的类型的方法