命名空间的写法

利用命名空间写js代码有很大的好处,一个是避免了全局变量的污染,一个是可维护性高,可扩展性高,且所有变量都是命名空间的私有变量,需要哪个暴露哪个即可,非常方便.

命名空间

命名空间的优点

  1. 所有变量都是命名空间的私有变量,需要使用哪个暴露哪个即可,非常方便。
  2. 避免了全局变量的污染。
  3. 可维护性高,可扩展性高。
  4. 且扩展方法的话,对原来的代码没有影响。

开闭原则

  1. 开:对扩展开发,即可以在原有的命名空间上扩展新的方法。
  2. 闭:对修改封闭,即要扩展的话不能在原有的代码上扩展。

in

  • 注意:本方法是利用函数来创建命名空间的,所有在本文中提到的所有的命名空间实际都是一个函数
  • 可以利用自执行函数来简化操作,使得可以直接使用命名空间暴露出来的变量以及方法,而不需要先new一下命名空间。
  • return一个对象,将需要暴露的方法及变量以键值对的方式暴露除去.
  • 创建命名空间;

    var ret = (function() {
    var temp = 10;
    function add(x, y) {
      return parseFloat(x) + parseFloat(y);
    }
    function substract(x, y) {
      return parseFloat(x) - parseFloat(y);
    }
    return {
      add: add,
      substract: substract
    }
      });
    // 使用命名空间暴露出来的方法
    ret.add(1,20) //得到21
    
  • 在命名空间中扩展方法,不能在原有函数(命名空间)中之间添加方法,而是应该将原先的命名空间作为一个参数传进一个新的命名空间中,添加方法完成后再返回这个命名空间,同时将这个命名空间再赋值给原来的命名空间,这样就既扩展了命令空间,但是又没有修改命名空间.

  • 代码示例

    var ret = (function(obj){
    obj.mod = function mod(x, y) {
      return parseFloat(x) % parseFloat(y);
    }
    return ret;
    })(window.ret || {})