命名空间的写法
利用命名空间写js代码有很大的好处,一个是避免了全局变量的污染,一个是可维护性高,可扩展性高,且所有变量都是命名空间的私有变量,需要哪个暴露哪个即可,非常方便.
命名空间
命名空间的优点
- 所有变量都是命名空间的私有变量,需要使用哪个暴露哪个即可,非常方便。
- 避免了全局变量的污染。
- 可维护性高,可扩展性高。
- 且扩展方法的话,对原来的代码没有影响。
开闭原则
- 开:对扩展开发,即可以在原有的命名空间上扩展新的方法。
- 闭:对修改封闭,即要扩展的话不能在原有的代码上扩展。
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 || {})