2016-07-29 56 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來說有點偏離主題。它可能很好。或者可能是因爲你的各種功能作爲屬性返回了一個非函數對象。

相關問題