对象枚举语法
Javascript Object enumeration syntax
我有这个对象:
var State = {
WAITING: 1,
READY: 2
}
和这个对象用于获取状态的文本:
var Language = {
States: {
WAITING: "Waiting..",
READY: "Ready!"
}
}
我想像这样直接从state获取文本:
var state = State.READY;
var statusText = Language.States[state];
要使它工作,我需要,像这样的非法语法:
var Language = {
States: {
State.WAITING: "Waiting..",
State.READY: "Ready!"
}
}
但这不起作用,我可以用什么来简单地从状态变量中获取文本?
不,你没有。只是让你的价值是合理的,而不是魔法数字。在这种情况下,让它们使用映射到其他对象使用的键名的字符串,并完成:
var States = {
WAITING: "WAITING",
READY: "READY"
}
var Language = {
States: {
WAITING: "Waiting..",
READY: "Ready!"
}
}
瞧:
var state = States.WAITING;
var label = Language.States[state]
如果这些状态数字有意义,那么也要查找它们:
var responseCodes = {
"0": "WAITING",
"1": "READING",
"403": "FORBIDDEN",
...
}
然后链接你的查找:
...
var responseCode = whatever();
var state = responseCodes[responseCode];
var label = Language.State[state];
...
试试这个:
var State = {
WAITING: 1,
READY: 2
};
var Language = {
States: {}
};
Language.States[State.WAITING] = "Waiting..";
//evaluated as, Language.States[1] = "Waiting..";
Language.States[State.READY] = "Ready!";
var state = State.READY;
var statusText = Language.States[state];
alert(statusText);
您可能来自一个语言背景,其中枚举是表示整数值的名称的集合。在JS中使用字符串作为枚举值更容易,然后你可以直接使用它们作为键来查找哈希中的东西,或者直接在switch
语句中使用它们,所以你根本不需要State
变量。你所需要的是
var Language = {
States: {
WAITING: "Waiting..",
READY: "Ready!"
}
}
var state = 'READY';
var statusText = Language.States[state];
相关文章:
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- 枚举附加到文档的HTML对象的所有事件
- JavaScript数组的子类化破坏了快速枚举
- 为什么Javascript程序员更喜欢在代码中重复字符串作为常量,而不是使用枚举类型的对象
- 不可枚举的属性出现在 for..在 Chrome 中循环
- json模式v4如何根据枚举实现枚举
- 如何访问从 jstl foreach 到 jQuery 的枚举值
- 如何从 Javascript 访问 Java 枚举 (Java 1.8)
- JSON.stringify未序列化可枚举属性
- 为什么ES6 WeakMap's不可枚举
- 如何在另一个对象中枚举一个对象
- Javascript propertyIsNumerable-是否有可枚举的方法
- Javascript不可枚举属性
- TypeScript 中的枚举:JavaScript 代码在做什么
- 使用枚举作为类型/接口
- sails.js:枚举的模型定义 - 动态值列表
- 如何更改 Javascript 对象属性的可写可枚举和可配置值
- 如何将中继变量设置为枚举值
- JavaScript for.in 和枚举奇怪的行为
- 对象枚举语法