我正在研究THREE.js并注意到一个模式,其中函数的定义如下:
var foo = ( function () {
var bar = new Bar();
return function ( ) {
//actual logic using bar from above.
//return result;
};
}());
(示例请参见此处的 raycast方法)。
这种方法的正常变化如下所示:
var foo = function () {
var bar = new Bar();
//actual logic.
//return result;
};
将第一个版本与正常变体进行比较,第一个版本似乎有不同之处:
它分配自执行功能的结果。
它在此函数中定义了一个局部变量。
它返回包含使用局部变量的逻辑的实际函数。
因此,主要区别在于,在第一个变体中,条形图在初始化时仅分配一次,而第二个变体在每次调用时都创建此临时变量。
我最好猜测为什么使用它是为了限制bar的实例数(只有一个),从而节省了内存管理开销。
我的问题:
这个假设是否正确?
这个模式有名字吗?
这是为什么用的?
慕标琳琳
慕婉清6462132
相关分类