如何在模块化设计模式中嵌套函数?

时间:2016-08-14 14:42:39

标签: javascript jquery

我正在尝试使用this article了解模块设计模式。

但我仍然不明白一些事情。我想要了解的主要内容是如何像以前一样“嵌套”函数。 以下是我用旧的“方法”(以及我想要实现的目标)实现这一目标的方法:

var ContentEditor = ContentEditor || {};
ContentEditor.events = {
  sayHi: function(){
    alert("Hi!");
  }
}
ContentEditor.events.sayHi();

现在,使用我的旧“方法”非常简单,但就像我说的那样,我正在尝试理解模块设计模式。

这是我到目前为止所做的:

var ContentEditor = (function(){
 // the nested "library"
 var events = {
   sayHi: function(){
     alert();
   }
 }
})();
ContentEditor.events.sayHi(); // this returns "Cannot read property 'events' of undefined".

因此,由于某种原因,不返回事件对象文字?所以我想,我需要归还它。所以我像这样更新了代码:

var ContentEditor = (function(){
 // Notice the return here
 return {
   var events = {
     sayHi: function(){
       alert();
     }
   }
 }
})();
ContentEditor.events.sayHi(); // This returns "Unexpected identifier".

我不明白我如何解决这个问题,任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:3)

您可以修改代码,如:

var ContentEditor = (function() {

  // Create the events object here
  var events = {

    // Our first private function
    sayHi: function() {
      alert('Hi!');
    },

    // One more private function inside the events object
    sayBye: function() {
      alert('Bye!');
    }
  }

  // Create some public functions here
  // and pass the private functions references to it
  return {
    sayHi: events.sayHi,
    sayBye: events.sayBye
  }
})();

// Call the public functions here
ContentEditor.sayHi();
ContentEditor.sayBye();