如何在自定义AMD dojo小部件中定义公共常量

时间:2013-04-09 07:44:54

标签: dojo

直到dojo 1.6我用来定义这样的公共常量:

dojo.declare('x.y.Z', null, { ... });

x.y.Z.constant = 100;

通过这种方式,可以从其他代码访问它们,而无需实例化类。

自dojo 1.7以来,我的小部件可能会被重命名或移动。所以我不应该在我的代码中使用绝对模块ID。

定义这样一个常量的好方法是什么?

2 个答案:

答案 0 :(得分:2)

如果您尝试将其附加到已定义的窗口小部件类,则可以执行以下操作:

define(["dojo/_base/declare"], function(declare) {
  var MyWidget = declare([], {
    //Define your widget as usual
  });

  MyWidget.someConstant = "42";

  return MyWidget;
});

现在你可以像这样使用它:

require(["MyWidget"], function(MyWidget) {
  console.debug(MyWidget.someConstant); // Prints out "42"
});

答案 1 :(得分:0)

我会在window对象中创建一个对象:

window.myConstants={};
window.myConstants.c1=100;

您可以从代码中的任何位置访问myConstants对象,因为它是一个全局对象。

javascript中没有真正的常量。