如何将静态数组分配给 Dojo 中的对象
How to assign a static array to an object in Dojo?
define(["dojo/_base/declare"], function (declare) {
// module:
// StyleNames
// summary:
// Style element names.
var StyleNames = declare(null,
{
PROP1: "Style1",
PROP2: "Style2"
}
);
StyleNames.dataContexts = [
StyleNames.PROP1,
StyleNames.PROP2,
];
return StyleNames;
});
var styleNames = new StyleNames();
console.log("PROP1 is defined as: ", styleNames.PROP1); // prints "Style1"
console.log("dataContexts is undefined: ", styleNames.dataContexts); // Error: styleNames.dataContexts is undefined
我的设置类似于 https://stackoverflow.com/a/11329956/1610451 但是在DOM中查看,我可以看到它设置为具有未定义值的构造函数styleNames.constructor.dataContexts
。
背景故事:我正在将ActionScript代码移植到JavaScript,需要维护现有的接口。我正在移植的 ActionScript 代码的一个示例是:
public class StyleNames {
public static const PROP1 : String = "Style1";
public static const PROP2 : String = "Style2";
public static const dataContexts : Array = [
PROP1,
PROP2
];
public function StyleNames(){}
}
你的声明是正确的。 在我看来,这是定义静态变量的最明确方法。 在console.log
代码中,您只是没有正确引用dataContexts
变量。 它是一个静态变量,因此它不属于任何一个实例。 你想这样引用它:StyleNames.dataContexts
.
编辑:你还有一个可能的语法错误。 去掉StyleNames.dataContexts
声明下的第二个逗号:
StyleNames.dataContexts = [
StyleNames.PROP1,
StyleNames.PROP2
];
像这样访问变量:
StyleNames.dataContexts
而不是this.dataContexts
或instanceRef.dataContexts
这就是我的思维方式
:require(["dojo/_base/declare"], function(declare) {
var StyleNames = declare(null, {
constructor: function() {
// a.k.a public function StyleNames(){}
},
// non-static properties and functions here
});
// static properties and functions
StyleNames.PROP1 = "Style1";
StyleNames.PROP2 = "Style2";
StyleNames.dataContexts = [
StyleNames.PROP1,
StyleNames.PROP2
];
console.log("PROP1: ", StyleNames.PROP1);
console.log("dataContexts: ", StyleNames.dataContexts);
});
请参阅jsFiddle的工作示例:http://jsfiddle.net/phusick/6nfhJ/
相关文章:
- 如何让我的正则表达式代码在我的dojo cellWidget对象上工作
- 如何在dojo中查询对象类型
- 如何将静态数组分配给 Dojo 中的对象
- 如何从xhrpost函数中检索响应数据并将该对象存储在dojo/store中
- dojo类对象的工作原理
- 如何在使用声明式 Dojo 时获取对象引用
- 如何使用 dedeclare 定义 dojo 静态变量或静态对象
- 如何使用 Dojo.fromJson 反序列化包含控制字符的 Json 对象
- 从 Dojo 中的对象列表创建表的最佳方法
- 由 dojo.declare 创建的对象如何访问自己的属性
- 存储为空或不是 dojo 中的对象错误
- 当我在 Dojo 中左键单击树行(树节点)时,如何从对象存储中获取 ID
- 如何在 chrome 开发者控制台中查看在 DOJO 中创建的单例对象
- 在 JavaScript DOJO 中维护对象状态
- DOJO 工具提示给出“未捕获的类型错误:对象不是函数”
- 在模型更改时刷新 Dojo MVC 组不适用于复杂对象
- 更新/修改从dojo数据存储/JsonRestStore检索到的对象
- Javascript - Dojo -对象对自身的引用
- Dojo XHR get load HTML不显示Dojo对象
- 在输入回调范围时获取对闭包 dojo 对象的访问权限