javascript的对象创建模式---命名空间模式
javascript中对象的概念是很普遍的,对象是是对象,数组是对象,函数也是对象,字符串其实也是对象。常见的对象创建方法有对象字面量、构造函数创建。我们先来看看对象的创建还有哪些更高级的模式。
一、命名空间模式
二、模块模式
三、沙箱模式
四、链模式
命名空间模式
什么是命名空间模式咧?简单的说就是为了避免出现过多的全局变量,将多个变量作为某一个全局变量的属性存在。
比如:
function brother1(){}; function brother2(){};
这样的两个函数直接作为了window的属性成为了全局变量,如果改成这样:
var parent={}; parent.brother1=function(){}; parent.brother2=function(){};
两个brother变成了一个全局变量的属性,保护了全局变量不被污染。
命名空间模式的好处是:
1、减少全局变量污染,只建立一个全局变量,把其他的所有功能函数、变量放到这个全局变量下,适合库的建立,比如jquery。
2、组织代码更规范。
当然命名空间模式也有一些缺点:
1、更长的字符串名称,每个变量和函数都需要有一个前缀,增加了代码的大小;
2、长嵌套意味着更长的属性解析时间。
通用命名空间函数
var MYAPP = MYAPP||{}; MYAPP.namespace=function(ns){ var parts = ns.split("."),parent=MYAPP,i; if(parts[0]=="MYAPP"){ parent=parts.slice(1); } for(i=0;i<parts.length;i++){ if(typeof parent[parts[0]]=="undefined"){ parent[parts[i]]={}; } parent=parent[parts[i]]; } };