在对象中存储函数名称并稍后调用它

时间:2018-03-11 04:30:35

标签: javascript

我正在开发单页应用程序,到目前为止我已经成功创建了一个可以让我在页面之间切换的系统,现在我想我需要一种方法来打开某个页面时调用特定的功能。

对于每个页面,我声明了function,例如#page1page1_func#page2page2_func,依此类推。

页面都以这种方式存储

var appPages  = {
    "page1": {
        "id": "#page1",
        "title": "Page 1 Title",
        "callback": page1_func
    },

    "page2": {
        "id": "#page2",
        "title": "Page 2 Title",
        "callback": page2_func
    }
};

另一个负责导航的功能,在调用时会获取有关该页面的信息,即其titleid来更新DOM。

我还希望该功能能够实际调用页面的callback属性中的函数。

function NavigateToPage( page )  {
    ..
    ..
    appPages[ page ].callback( "some args" );
}

然而,这并不起作用,因为我在脚本的末尾声明了函数,但据我所知,在结尾或开头声明一个函数它并不重要,它总是可用的虽然在我的情况下,控制台告诉我page1_func没有定义。

我需要帮助来更好地解决这个问题

1 个答案:

答案 0 :(得分:2)

这是有效的。



const appPages  = {
  page1: {
    id: '#page1',
    title: 'Page 1 Title',
    callback: page1_fn,
  },

  page2: {
    id: '#page2',
    title: 'Page 2 Title',
    callback: page2_fn,
  }
};

function triggerCallback(page) {
  appPages[page].callback('args...');
}

triggerCallback('page1');

function page1_fn(arg) {
  document.write(arg);
}

function page2_fn(arg) {
  document.write(arg);
}