登录
  • 欢迎访问 Sharezer Blog

JS 通过方法名,判断方法是否存在,并执行

Default sharezer 2996次浏览 已收录 0个评论

最近因为学习Laya的原因,重新接触了一下JS

在写状态机的时间突然有一个想法

当我从状态机得到一个样的状态,把他转换方法名,通过得到的方法名,能不能直接调用方法

比方说,当前的状态为TestState,判断TestState()是否存在,如果存在则执行this.TestState()

方法一

通过hasOwnProprety判断

var funcName = "TestFunc";

if (GameManager.prototype.hasOwnProperty(funcName))
{
    Tools.log("方法存在");
    var func = eval("this." + funcName + "()");
}
else
{
    Tools.log("方法不存在")
}

JS 通过方法名,判断方法是否存在,并执行

方法二

能过eval

//是否存在指定函数
function isExitsFunction(funcName)
{
    try
    {
        if (typeof(eval(funcName)) == "function")
        {
            return true;
        }
    }
    catch(e) {}
    return false;
}
//是否存在指定变量
function isExitsVariable(variableName)
{
    try
    {
        if (typeof(variableName) == "undefined")
        {
            //alert("value is undefined");
            return false;
        }
        else
        {
            //alert("value is true");
            return true;
        }
    }
    catch(e) {}
    return false;
} 


Sharezer , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明JS 通过方法名,判断方法是否存在,并执行
喜欢 (3)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址