JavaScript 中的动态事件构建



我想为脚本中的每个函数创建一个事件,然后将事件触发器注入函数的末尾。

这样我就可以准确地看到每个函数何时完成,并将钩子等事件用于其他函数

如果我能动态地做到这一点,我可以添加任意数量的新功能,而无需创建和附加这些事件。

这是我正在尝试做的一个基本示例,这实际上行不通,但它给了你一个想法。我一直在使用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();

最新更新