在量比较大或者多人编写的情况下,命名冲突就很有可能发生,同一个页面引用了两个命名相同功能不同的文件,调用的时候就会出问题。因此使用JS命名空间很重要。

1.采用字面量方法创建命名空间:

var a={

login:function(){……}

}

var b={

login:function(){……}

}//可以在a\b空间里面的login里面加入所需要的属性和方法。

2.

var com;

if(!com) com={};//第一级域名

com.ModuleClass={};//第二级域名

com.ModuleClass.函数名1=function(){函数体;}

com.ModuleClass.函数名2=function(){函数体;}

3.使用动态方法创建(有两种方法,1.window对象实现 2.eval实现)

//window实现

var namaSpace=nameSpace||{};

(function(){

var global=window;

nameSpace.ns=function(nsStr){

var parts=nsStr.split('.');

root=global;

i;

for(i=0,max=parts.length;i<max;i++){

if(typeof root[parts[i]]==="undefined"){

root[parts[i]]={};

}

root=root[parts[i]];

}

return root;

};

})();

使用命名空间:

nameSpace.ns("BP.login");

BP.login={

min_height=660;

min_width=1024;

isIE:false;

init:function(){

this.isIE=$.browser.msie;

this.regEvent();

this.initPage();

BP.page.i18nInit();

}

}

使用其中的函数:

<html>

<head>

<mata name="others" content="login_page">

<script>

$(document).ready(function(){

BP.login.init();

});

</sctipt>

</head>

<body>

</body>

</html>

// eval实现

a.命名空间注册工具类

var Namespace=new Object();

Namespacr.register=function(path){

var arr=path.split('.');

var ns="";

for(var i=0;i<arr.length;i++){

if(i>0)  ns+=".";

ns+=arr[i];

eval("if(typeof("+ns+")=='undefined')"+ns+"=new Object();");

}

}

b.注册命名空间com.boohee.ui

Namespace.register('com.boohee.ui')

c.使用命名空间

com.boohee.ui.TreeGrid=function(){

this.sayHello=function(name){

alert("hello"+name);

}

}

var t=new com.boohee.ui.TreeGrid();

t.sayHello('uid');

js命名空间笔记的更多相关文章

  1. vue.js 学习笔记3——TypeScript

    目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  4. js读书笔记

    js读书笔记 基本类型的基本函数总结 1. Boolean() 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 "&q ...

  5. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  6. JS 学习笔记--9---变量-作用域-内存相关

    JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...

  7. js命名空间的使用

    js命名空间的使用: test.html 代码如下: <!DOCTYPE HTML><html lang="en-US"><head>    & ...

  8. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  9. JS面向对象笔记二

    菜单导航,<JS面向对象笔记一>,  参考书籍:阮一峰之<JavaScript标准参考教程> 一.构造函数和new命令 二.this关键字 三.构造函数和new命令 四.构造函 ...

随机推荐

  1. Eureka的故事,专注能让你看到别人看不到的事情

    有这么一句古老的箴言: 如果你手里有一把锤子,所有东西看上去都像钉子. 其实这句话已经是老调中的老调重弹了,我们程序员有很多锤子:OO.设计模式.语言(C, C++, Java, Python, Ru ...

  2. 布置theano(Windows10,无cuda)

    软件包准备 1.Anaconda 下载地址,包含python.numpy.scipy.nose.pip等包,嗯,很爽. 2.tdm64-gcc 下载地址,windows下的gcc.g++编译器,用来t ...

  3. LinkedHashMap 和 LRU算法实现

    个人觉得LinkedHashMap 存在的意义就是为了实现 LRU 算法. public class LinkedHashMap<K,V> extends HashMap<K,V&g ...

  4. Feature Scaling

    定义:Feature scaling is a method used to standardize the range of independent variables or features of ...

  5. 实现 DIV 固定定位在网页主体部分最右侧

    position:fixed 相对于窗口的固定定位,这个窗口可理解为可视窗口,除了浏览器自己的东西,剩下的就是这个可视窗口.而大部分的网页都是窄屏设计,比如说网页主体部分固定宽 1200px,或者自适 ...

  6. java io读书笔记(7) Closing Output Streams

    输出完毕后,需要close这个stream,从而使操作系统释放相关的资源.举例: public void close( ) throws IOException 并不是所有的stream都需要clos ...

  7. SQL语句执行时间测试

    select getdate()--开始执行时间   要执行的SQL语句 select getdate() --结束时间

  8. 2-sat按照最小字典序输出可行解(hdu1814)

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  9. Ubuntu Firefox installs Flashplayer

    Adobe flash 下载(https://get.adobe.com/flashplayer/)  tar.gz版本(注:adobe 提供了yum,rpm,tar.gz和APT四种版本,yum和t ...

  10. [原创]java WEB学习笔记89:Hibernate学习之路-- -Hibernate检索方式(5种),HQL介绍,实现功能,实现步骤,

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...