2

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

这样我就可以准确地看到每个功能何时完成,并将诸如钩子之类的事件用于其他功能

如果我可以动态地执行此操作,我可以添加任意数量的新函数,而无需创建和附加这些事件。

这是我正在尝试做的一个基本示例,这实际上不起作用,但它给了你一个想法。我一直在使用 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 请求,按钮。等等...如果我可以将每个功能与一个事件联系起来,那么在扩展它、添加新功能等时我的生活会更轻松...

4

1 回答 1

1

循环遍历每个函数,用新函数替换它,它在同一对象上调用原始函数并在主体上触发事件。

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();
于 2012-10-03T16:16:48.470 回答