避免从对象运行函数

时间:2013-06-05 12:03:56

标签: javascript jquery

我有类似的东西:

$(function(){
    init = {
        actions :{
            settings    : [settings_title(), settings_time(), settings_category(), settings_design(), settings_registration()],         
            timer       : [timer()]             
        }
    };

但我不希望所有这些函数在页面加载时立即运行,就像点击时一样:

$('.save').click(function(){
    init.actions.settings[1];
});

或者我错过了什么

1 个答案:

答案 0 :(得分:7)

我想你可能正在寻找这个:

$(function(){
    init = {
        actions :{
            settings    : [settings_title, settings_time, settings_category, settings_design, settings_registration],         
            timer       : [timer]             
        }
    };
// ...

函数名后面没有(),所以我们只是引用函数对象(在数组中引用它),而不是调用它并返回它的返回值在阵列中。

然后:

$('.save').click(function(){
    init.actions.settings[1]();
    // Note ----------------^^
});

...它调用我们存储在索引1的数组中的函数。


旁注:除非你在某个地方展示过你未展示过的init声明,否则你将成为The Horror of Implicit Globals的牺牲品。