Javascript 函数列表是什么?

What is Javascript FunctionList?

我在玩一个网络游戏untrusted,是写代码玩的。 有些语法我以前从未见过,也无法在网上找到。谁可以给我解释一下这个?

functionList['movePlayerToExit'] = function () {
    map.writeStatus("Permission denied.");
}

functionList['pleaseMovePlayerToExit'] = function () {
    map.writeStatus("I don't think so.");
}

functionList['movePlayerToExitDamnit'] = function () {
    map.writeStatus("So, how 'bout them <LOCAL SPORTS TEAM>?");
}

请解释一下什么是functionList,谢谢!

还有熟悉这款游戏的朋友请不要剧透,再次感谢!

大多数人会写

functionList['movePlayerToExit'] = ...

作为

functionList.movePlayerToExit = ...

只是普通的JavaScript对象属性参考语法。由于这些字符串如果用作标识符将是有效的,因此无需使用 [ ] 语法。

因此,如果不清楚,functionList是一个对象。它在您正在查看的代码中的确切含义,我不能说。它看起来像某种调度对象,因此可以查找像 "movePlayerToExit" 这样的操作代码并调用相应的函数:

var actionCode = getActionCode(totallyMakingThisUp);
if (functionList[actionCode] != null)
  functionList[actionCode]();

请注意,在那个虚构的示例中, 必须使用 [ ] 来访问 functionList 的属性,因为 属性 名称存储在变量中。

可能只是一个将功能分配给键(属性)的对象:

var obj = {};

obj["foo"] = function () { ... };
obj["bar"] = function () { ... };

等同于:

var obj = {
    "foo": function () { ... },
    "bar": function () { ... }
};

就像一张地图。

但是,它可能是 class 的一个实例,它会覆盖方括号运算符,例如 ArrayMapWeakMap 等。但是这并没有真正定义不同的行为。