我想为脚本中的每个函数创建一个事件,然后将事件触发器注入函数的末尾。
这样我就可以准确地看到每个函数何时完成,并将钩子等事件用于其他函数
如果我能动态地做到这一点,我可以添加任意数量的新功能,而无需创建和附加这些事件。
这是我正在尝试做的一个基本示例,这实际上行不通,但它给了你一个想法。我一直在使用jQuery,但我完全接受任何JavaScript框架和任何方法。
var obj = {};
(function()
{
this.init = function()
{
// loop through every function
$.each(this, function(k, v)
{
// create an event for every function
$('body').bind(v, function()
{
console.log('Event: ' + v + ' Finished');
});
// Add a event trigger into each specific function in the loop
this[v].call($('body').trigger(v));
});
}
this.another_function = function()
{
// do something
}
this.some_function = function()
{
/do something
}
}).apply(obj);
obj.init();
(编辑)脚本本身基本上渲染了一个日历,但是有很多回调,ajax请求,按钮等。如果我可以将每个功能与一个事件联系起来,那么在扩展它、添加新功能等时,我会让我的生活更轻松......
遍历每个函数,将其替换为新函数,该函数在同一对象上调用原始函数并在 body 上触发事件。
var obj = { };
(function()
{
this.init = function()
{
var self = this;
foreach(var name in this) {
if (typeof k !== 'Function') continue;
if (name ==='init') continue;
var original = this[name];
var newFunc = function() {
original.apply(self, arguments);
$('body').trigger(name);
}
this[name] = newFunc;
}
}
this.another_function = function()
{
// do something
}
this.some_function = function()
{
/do something
}
}).apply(obj);
obj.init();