将方法添加到调用该函数的函数中

时间:2016-07-29 11:35:50

标签: javascript design-patterns

创建模块我结束了设计模式,我将方法附加到函数,我不确定它是否正确。它是一个闭包,它返回一个附加了一些方法的函数,这些函数又调用函数本身。 我不知道这是不好的做法还是被认为是好的。我的目标是提供用某些礼物或以不同方式调用函数的方法,但我希望保留以简单形式调用函数的能力。这会导致内存泄漏或类似的事情吗?

我在任何时候都没有使用它,所以没有失去背景的危险。

您可以在下面找到包含简化版本的代码段。

function factory( general ){

    var pusher = setTimeout(function(){ console.log('$',general) },1000);
    var counter = 0;

    function reporter ( specific ){
        counter++;
        console.log(counter, general , specific)
    }

    reporter.middleware = function ( something ){
        clearTimeout(pusher);
        return factory ( general + something )
    }

    return reporter
}

提前致谢。

1 个答案:

答案 0 :(得分:2)

  

这是否会导致内存泄漏或类似内容?

不过别的什么。 : - )

由于函数是JavaScript中的正确对象,因此可以向它们添加属性,这些属性可以引用其他函数。从技术层面来说,这根本不是问题。例如,jQuery使用$函数来完成它,它不仅可以调用($()),而且还有其他各种函数($.ajax$.Deferred,{ {1}}等。)。

无论是好的风格还是设计都是一个问题,主要是意见,所以对SO来说有点偏离主题。这可能很好。或者,你最好不要将具有各种功能的非功能对象作为属性返回。