使用常量作为 JavaScript 关联数组的索引

2024-04-02

我希望在 JavaScript 中创建一个关联数组,但使用定义为类一部分的常量作为索引。

我想要这个的原因是这样类的用户可以使用常量(定义事件)来触发操作。

一些代码来说明:

STATE_NORMAL = 0;
STATE_NEW_TASK_ADDED = 0;
this.curr_state = STATE_NEW_TASK_ADDED;

this.state_machine = {
    /* Prototype:
    STATE_NAME: {
        EVENT_NAME: {
            "next_state": new_state_name,
            "action": func
        }
    }
    */

    STATE_NEW_TASK_ADDED : { // I'd like this to be a constant
        this.EVENT_NEW_TASK_ADDED_AJAX : {
            "next_state": STATE_NEW_TASK_ADDED,
            "action" : function() {console.log("new task added");},
        }
    }
}

// Public data members.
// These define the various events that can happen.
this.EVENT_NEW_TASK_ADDED_AJAX = 0;
this.EVENT_NEW_TASK_ADDED_AJAX = 1;

我很难让它发挥作用。我不太擅长 JavaScript,但看起来无论我做什么,数组都是用字符串而不是常量定义的。有没有办法强制数组使用常量?


在 ECMAScript 6 中,您可以使用对象键的计算值:

var CONSTANT_A = 0, CONSTANT_B = 1
var state_machine = {
    [CONSTANT_A]: function () {
        return 'a'
    },
    [CONSTANT_B]: function () {
        return 'b'
    }
};

console.log(state_machine)

这在 Internet Explorer 11 和 Safari 浏览器中不起作用:https://kangax.github.io/compat-table/es6/#test-object_literal_extensions_compulated_properties https://kangax.github.io/compat-table/es6/#test-object_literal_extensions_computed_properties

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用常量作为 JavaScript 关联数组的索引 的相关文章

随机推荐