2016-07-29 77 views
2

创建模块我结束了设计一个将方法附加到函数的模式,我不确定它是否正确。它是一个闭包,它返回一个附加了一些方法的函数,然后调用函数本身。 我不知道这是不是一个坏习惯,或者如果它被认为是好的。我的目标是提供一些方法来以某种形式或以不同方式调用函数,但我想保留以更简单的形式调用函数的功能。这会导致内存泄漏或类似的东西?向调用函数的函数添加方法

我没有在任何时候使用它,所以没有丢失上下文的危险。

下面你可以找到一个简化版本的代码片段。

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 
} 

在此先感谢。

+0

我已经看到方法添加到这里使用的函数https://www.npmjs.com/package/page。我个人觉得它有点混乱,但它的工作原理。 – Emile

回答

2

这会导致内存泄漏或类似的东西?

没有比别的更重要的了。 :-)

由于函数是JavaScript中的正确对象,因此可以向它们添加属性,而这些属性可以引用其他函数。在技​​术层面上,这根本不是问题。例如,jQuery通过它的$函数来完成它,该函数不仅可以调用($()),而且还具有其他各种功能($.ajax,$.Deferred$.noConflict等)。

无论是好的风格还是设计都是一个问题,很大程度上是意见,所以对于SO来说有点偏离主题。它可能很好。或者可能是因为你的各种功能作为属性返回了一个非函数对象。