从Object中调用动态设置的Function Object Property

时间:2014-06-10 19:06:06

标签: javascript

在我的网页中,我正在创建一个对象并尝试从其中调用动态设置的函数。然而,动态功能没有被执行。 这是Object的一个子集:

var LightBoxLogin = {
    DialogBox: null,
    SuccessFunction: null,
    .......... 
    Login: function(){
        console.log(LightBoxLogin.SuccessFunction) // Displays "TestSubmit()"
        LightBoxLogin.SuccessFunction(); // does nothing, should alert the page
    }
}

LightBoxLogin.SuccessFunction设置为:

function SuperLightbox(functOnSuccess)
{
    LightBoxLogin.SuccessFunction = functOnSuccess;

    if(IsLightboxNeeded())
    {
        LightBoxLogin.Login();
    }
    else{
        alert("Not needed");
    }

}

并称之为:

function TestSubmitHandler ()
{
    SuperLightbox(TestSubmit);
}

function TestSubmit ()
{
    alert('TEST SUBMIT ALL CAPS');

}

如果我遗漏任何东西,请告诉我。 我只需要最初执行作为参数传递的函数。

1 个答案:

答案 0 :(得分:0)

而不是行

SuperLightBox(TestSubmit);

使用函数名作为字符串:

SuperLightBox("TestSubmit");

这意味着在Login:function()这一行:

LightBoxLogin.SuccessFunction();

将替换为:

window[LightBoxLogin.SuccessFunction]();

这产生了我正在寻找的结果,但要注意;只有在页面中全局访问所需的功能时,它才有效。