理解揭示模块化模式

时间:2015-07-06 09:42:45

标签: javascript jquery

嘿伙计们,我只想了解揭示模块化模式,我看到以下简单描述的模糊模式:

NOLOCK

现在揭示了模糊图案::

的以下缺点
  

这种模式的缺点是如果私有函数引用   公共功能,如果补丁,公共功能不能被覆盖   有必要的。这是因为私人功能将继续   参考私有实现,模式不适用   公共成员,仅限于职能部门。

我不太明白上述段的意思,有人可以解释一下吗?私人职能是指公共职能,是不是很明白,有人可以将其分解吗?

1 个答案:

答案 0 :(得分:2)

考虑:



Mod = function() {
  
  
  function inc() {
    return value() + 1;
  }
  
  var value = function() { return 42 }
  
  var valuePlusOne = function() { return inc() }
  
  return {
    value: value,
    valuePlusOne: valuePlusOne
  }
}()

document.write(Mod.valuePlusOne()) // 43

Mod.value = function() {
  return 999
}

document.write(Mod.valuePlusOne()) // still 43, not 1000




问题是inc从其包含范围使用var value,而不是模块对象的value属性。更改模块时,这不会影响范围内的var value

解决方法是将私有函数绑定到要返回的对象:



Mod = function() {
  
  var value = function() { return 42 }
  
  var valuePlusOne = function() { return inc() }
  
  var me = {
    value: value,
    valuePlusOne: valuePlusOne
  }
  
  function inc() {
    return me.value() + 1;
  }
  
 
  return me;
}()

document.write(Mod.valuePlusOne()) // 43

Mod.value = function() {
  return 999
}

document.write(Mod.valuePlusOne()) // 1000