如何隔离我的javascript代码以防止冲突?

And*_*rew 15 javascript

我一直在写很多javascript函数和事件监听器,我想将它们移动到它们自己的命名空间,隔离的地方,当我连接并用我的其他javascript文件缩小它时不会发生冲突.

我还是javascript的新手,所以这个答案可能有简单的解决方案.我开始创建一个javascript对象:

var MySpecialStuff = {
    init: function(){
        //do everything here
    }
};
Run Code Online (Sandbox Code Playgroud)

然后在我的html中,在我想要使用它的页面上,我可以初始化这段代码:

<script>
    MySpecialStuff.init();
</script>
Run Code Online (Sandbox Code Playgroud)

但随后该init方法开始增长,我需要开始将代码分解为更小的块,但我仍然坚持语法以及如何设置私有方法/变量并从init方法和其他私有方法中调用它们.我怎样才能做到这一点?

我是朝着正确的方向前进的吗?我/我应该采取哪些其他方式来做这类事情?

rav*_*rav 23

你朝着正确的方向前进.您可以使用模块模式创建具有私有成员和方法的对象,如下所示:

var foo = function(){
  var bar = ""; //private

  function funk(){
    //private function    
    return "stuff";
  }

  return{
    getBar: function(){
      return bar;
    },
    init: function(){
      alert(funk());
    },
    randomMember: 0 //public member
  }


}();
Run Code Online (Sandbox Code Playgroud)

只有返回块中的内容是公共的,但您可以调用任何私有方法/访问返回块中的任何私有方法.