在量比较大或者多人编写的情况下,命名冲突就很有可能发生,同一个页面引用了两个命名相同功能不同的文件,调用的时候就会出问题。因此使用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. SHA-2 Certificate Signing Request

    To request an SSL certificate is now a SHA-2 Certificate Signing Request (CSR) is required. Using th ...

  2. 清除mstsc远程登录记录

    这里提供一串清除mstsc远程登录记录的命令 @echo off set TMP1=%cd%echo %TMP1%reg delete "HKEY_CURRENT_USER\Software ...

  3. python实现跳板机

    公司有1000多台服务器,线上机器都是禁止root登录的,所以平时是用普通用户登录,然后在su到root,密码都是在excel表中存的,这样登录一台机器,输两次命令,搜两次密码,实在很麻烦,有一天备份 ...

  4. duplicate database的时候,rman连接 auxiliary database的后状态不正确

    duplicate database的时候,rman连接 auxiliary database的后状态不正确 auxiliary database 已经被startup nomount,但是rman连 ...

  5. 使用Genymotion来运行Android Studio开发的程序

    访问网址:https://www.genymotion.com,注册账户,之后下载,下载时需要注意不要选择(withou virtualbox那个) 之后运行安装, 运行Genymotion运行启动G ...

  6. 前端bower使用

    Bower是一个客户端技术的软件包管理器,是由twitter推出的.它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源.其他一些建立在Bower基础之上的开发工具,如Yeo ...

  7. 1029-对c语言文法的理解

    <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...

  8. poj 题目分类(2)

    初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj329 ...

  9. IMapDocument interface

      Provides access to members that control the reading and writing of map document files.(提供访问的成员,控制读 ...

  10. @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不

    @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中 2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不加@那么需要用一些转义符\来显示一些特 ...