我在这里已经看到了类似性质的多个问题,但没有一个可以用于我拥有的特定事物(我使用node.js)。所以例如在这里使用此代码。
function command_call(message, socket) {
if (message.length > 1){
var func = message[0];
var string = message.slice(1);
var string = string.join(' ')}
else{
var func = message[0];
var string = '';};
if(func[0] == '$') {
(eval(func.slice(1)))(string, socket);};
};
function say(string, socket){
socket.write(string)};
如果传递给command_call的消息是“$ say hi”,则函数say将被调用并返回“hi”。这工作得很好但是,如果放入eval的函数不存在,它就会崩溃。例如,如果传递给command_call的消息是“$ example blah”,它将尝试评估“example”。基本上我需要它来检查函数是否存在它之前它的功能。是的我想使用eval,除非在节点中有更好的方法。再次,这是在node.js
答案 0 :(得分:3)
你应该创建一个函数对象并使用索引符号:
var methods = {
$say: function() { ... }
};
if (!methods.hasOwnProperty(func))
// uh oh
else
methods[func]();