2015-10-08 28 views
1

我正在玩一款名为untrusted的在线游戏,通过编写代码来玩。 有一些我从未见过的语法,无法找到一个网页。谁可以给我解释一下这个?什么是Javascript FunctionList?

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,谢谢!

对于那些熟悉这个游戏的人,请不要宠坏,再次感谢你!

+0

这是一个对象。它在您的应用程序中完全*是很难说的。 – Pointy

+0

你能更具体吗?也许是一个例子?谢谢! – weiway

+0

查看我刚刚输入的答案。 – Pointy

回答

3

大多数人会写

functionList['movePlayerToExit'] = ... 

functionList.movePlayerToExit = ... 

这只是普通的JavaScript对象属性引用的语法。由于这些字符串在用作标识符时是有效的,因此不需要使用[ ]语法。

因此,如果不明确,functionList是一个对象。在你看的代码中究竟意味着什么,我不能说。它看起来像某种调度的对象,因此像“movePlayerToExit”的操作代码可以抬起头来,相应的函数调用:

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

注意,在制造的例子,它必要使用[ ]来访问functionList的属性,因为属性名称存储在变量中。

2

这是可能只是其中功能分配给按键的对象(属性):

var obj = {}; 

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

是一样的:

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

就像一幅地图。

但是,它有可能是覆盖方括号运算符的类的实例,例如Array,Map,WeakMap等。但是,这并不能真正定义不同的行为。

+0

它也适用于:'var obj = function(){};'或'var obj = [];' – Jonathan

+0

@Jonathan这是事实,但是'Function'是一个'Object',就像'Array '。 – Tim