避免从对象运行函数

nap*_*ias 0 javascript jquery

我有这样的事情:

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

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

$('.save').click(function(){
    init.actions.settings[1];
});
Run Code Online (Sandbox Code Playgroud)

或者我错过了什么

T.J*_*der 7

我想你可能在寻找这个:

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

()在函数名之后没有,所以我们只是引用函数对象(在数组中引用它),不调用它并将其返回值放在数组中.

然后:

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

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


旁注:除非你有一个init你没有展示过的地方的声明,否则你将成为暗杀全球恐怖的牺牲品.