在我的网页中,我正在创建一个对象并尝试从其中调用动态设置的函数。然而,动态功能没有被执行。 这是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');
}
如果我遗漏任何东西,请告诉我。 我只需要最初执行作为参数传递的函数。
答案 0 :(得分:0)
而不是行
SuperLightBox(TestSubmit);
使用函数名作为字符串:
SuperLightBox("TestSubmit");
这意味着在Login:function()这一行:
LightBoxLogin.SuccessFunction();
将替换为:
window[LightBoxLogin.SuccessFunction]();
这产生了我正在寻找的结果,但要注意;只有在页面中全局访问所需的功能时,它才有效。