前段时间在做一个程序的时候,遇到需要根据字符串内容调用相应函数的情况,如:从服务器端获取到XML数据文件,需要根据其中command节点的内容来调用相对应的函数,若command节点为”login”,则调用on_login函数,节点内容为”register”,则调用on_register函数…
最开始比较简单,我都是根据字符串内容来switch,这样不太好,经Glen提醒,看是否能根据字符串内容直接去找相应配对的函数执行,函数名统一为字符串内容前加”on_”,经过尝试,采用以下办法来达到需求。
为了程序结构清楚,我建立了一个名为Commandhandler的类,利用getInstance()获取其单例,再定义一commandManager方法,该方法便是根据传入的字符串参数去调用相应的方法,其关键是以[]的方式调用方法,当然在调用之前最好判断是否存在这样的方法。
commandManager函数代码如下:
public function commandManager(func:String):String {
var functionName:String = "on_" + func;
var str:String;
if(this.hasOwnProperty(functionName)) {
return this[functionName]();
}
return null;
}
点击运行示例,在示例上右键点击可查看源码。
Tags:
ActionScript3,
Flex3