在public函数中调用private函数的基本用法是什么?

时间:2016-04-01 16:47:22

标签: javascript

从publicMethod调用privateMethod的目的是什么? 我们不能只在public方法中定义privateMethod的内容并做同样的事情吗?

var basketModule =  (function() {

      var basket = [];

  function privateMethod() {
      console.log(basket);
  }

  return {
      publicMethod: function(){
              privateMethod();
      }
  };

})());
basketModule.publicMethod();

1 个答案:

答案 0 :(得分:2)

在您的简单示例中,privateMethod没有真正存在的原因,因为所有publicMethod都会调用它,但在更现实的示例中,私有方法会执行以下操作:你不希望其他模块自己打电话。

例如,这是我今天工作的一段代码,简化为一个很好的例子:

(function(){

  function _renderTreeLevel() { ... }

  function _backfillAllSelectedStates() { ... }

  function _updateSelectedCount() { ... }

  return {
    render: function() {
      var expandCollapse = new ExpandCollapse();
      expandCollapse.render();

      _renderTreeLevel(0, this.ui.treeRegion, this.treeData);
      _backfillAllSelectedStates();
      _updateSelectedCount((this.options.selected || []).length);

      $('.collapse').collapse();
    }
 };

})();

3"私人"以' _'开头的功能只是函数,我把代码放入重构,使代码更清晰,更可重用。它们不是我希望有人能够打电话的功能。

此模块的用户应仅呼叫render()

推理与内置公共和私有成员的任何其他语言(如C#或Java)相同,但由于JavaScript没有提供该概念,因此这是人们提供类似的模式行为。