创建模块我结束了设计模式,我将方法附加到函数,我不确定它是否正确。它是一个闭包,它返回一个附加了一些方法的函数,这些函数又调用函数本身。 我不知道这是不好的做法还是被认为是好的。我的目标是提供用某些礼物或以不同方式调用函数的方法,但我希望保留以简单形式调用函数的能力。这会导致内存泄漏或类似的事情吗?
我在任何时候都没有使用它,所以没有失去背景的危险。
您可以在下面找到包含简化版本的代码段。
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 :(得分:2)
这是否会导致内存泄漏或类似内容?
不过别的什么。 : - )
由于函数是JavaScript中的正确对象,因此可以向它们添加属性,这些属性可以引用其他函数。从技术层面来说,这根本不是问题。例如,jQuery使用$
函数来完成它,它不仅可以调用($()
),而且还有其他各种函数($.ajax
,$.Deferred
,{ {1}}等。)。
无论是好的风格还是设计都是一个问题,主要是意见,所以对SO来说有点偏离主题。这可能很好。或者,你最好不要将具有各种功能的非功能对象作为属性返回。