命名冲突

全局变量会绑定到 window 上,不同的javascript文件如果使用了相同的全局变量,或者定义了相同名字就的顶层函数,都会造成命名冲突,并且很难被发现。

减少冲突的一个办法,把自己的所有变量和函数全部绑定到一个全局变量中:

<script type="text/javascript">
var MYAPP = {}; // 定义全局唯一的变量MYAPP MYAPP.name = 'haha'; // 定义自己的变量 // 定义自己的方法
MYAPP.foo = function() {
return 'Foo';
}; // 调用方法
ret = MYAPP.foo();
alert(ret);
alert(MYAPP.name); </script>

说明:

这里我们将变量和方法封存在 全局唯一变量 MYAPP中,在调用其中的属性和方法的时候,必须加上唯一变量名。

这样即使内部属性和方法同名,只要前面的唯一变量名不同名,都能正常执行,不回存在命名冲突。

解决方法验证

当我们将属性和方法封存在全局 唯一变量 中,然后外面直接调用:

<script type="text/javascript">
var MYAPP = {}; // 定义全局唯一的变量MYAPP MYAPP.name = 'haha'; // 定义自己的变量 // 定义自己的方法
MYAPP.foo = function() {
return 'Foo';
}; // 调用方法
ret = foo();
console.log(ret); // 报错 r = name;
console.log(r); // 报错 </script>

方法

说明:

结果报错!

定义两个全局唯一变量,然后里面属性和方法同名,通过全局唯一变量名进行调用:

<script type="text/javascript">
// 定义全局唯一的变量MYVAR01,并定义自己的属性和方法
var MYVAR01 = {
name: 'xxx', foo: function() {
return 'xxxx';
},
}; // 定义全局唯一的变量MYVAR02,并定义自己的属性和方法
var MYVAR02 = {
name: 'ooo', foo: function() {
return 'oooo';
}
}; // 调用MYVAR01的方法
r1 = MYVAR01.name;
console.log(r1);
r2 = MYVAR01.foo();
console.log(r2); // 调用MYAVAR02的方法
r3 = MYVAR02.name;
console.log(r3);
r4 = MYVAR02.foo();
console.log(r4); </script>

方法

结果:

xxx
xxxx
ooo
oooo

注意:

在变量中写方法和在变量外面写方法,方式是不一样的。注意区分写法。

JS命名空间的更多相关文章

  1. js命名空间笔记

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

  2. js命名空间的使用

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

  3. 浅谈js命名空间管理

    在C# 和 Java里面我们如果想使用哪一个功能类就要引用相应的命名空间. 如C#里面有个System.Web.UI库,我们就要用using   System.Web.UI;,之后我们就可以用到Scr ...

  4. 深入剖析js命名空间函数namespace

    在看阿里员工写的开源数据库连接池的druid的源代码时,发现了其中在jquery的原代码中又定义了一个命名空间的函数:$.namespace(),其代码如下: 网址为:https://github.c ...

  5. 第一课:js命名空间的介绍,js对象的扩展以及js数组化

    1.命名空间: js里面的命名空间就是使用对象的属性来扩展的.比如,用户定义一个A对象,A对象下面有B属性和C属性,同时B属性和C属性又是对象.因此A={B:{},C:{}},这时用户就可以在B对象和 ...

  6. JS命名空间模式解析

    简介 在SF上看到这样一个提问: 如题,因为不得已的原因,需要写若干个全局函数.但又不想这样: window.a = function(){} window.b = function(){} wind ...

  7. 使用js命名空间进行模块式开发

    在java中,为了防止命名冲突和模块式开发,会有个一个import 关键字来进行导包. 在js中为了达到同样的效果,我们也通过给其自定义一个“包”的概念. 直接上代码: 首先有个LC.js文件: // ...

  8. JS 命名空间 实现方式 收集

    一. 对象注册式 // 声明一个全局对象Namespace,用来注册命名空间Namespace = new Object(); // 全局对象仅仅存在register函数,参数为名称空间全路径,如&q ...

  9. jQuery事件命名空间多事件绑定自定义事件js 命名空间 javascript命名空间

    http://blog.csdn.net/pigpigpig4587/article/details/24727791 jQuery事件命名空间 jQuery支持事件命名空间,以方便事件管理.例如,在 ...

  10. js命名空间写法

    很早知道这种写法,由于基础面向对象不够扎实一直在回避,但是面对整站这种方法还是有必要会 <div id="div1">111</div> <div i ...

随机推荐

  1. 《分布式事务解决之道》沙龙ppt共享

    大型分布式系统往往由很多“微服务”组成,而不同的微服务往往又连接着不同的数据库,在看似常用的功能背后,可能又需要横跨不同的“微服务”和“数据库”才能实现.那么如何才能保证系统事务的一致性呢?这也同时是 ...

  2. java接口调用——webservice就是一个RPC而已

    很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...

  3. 深刻理解:C#中的委托、事件

    C#中的事件还真是有点绕啊,以前用JavaScript的我,理解起来还真是废了好大劲!刚开始还真有点想不明白为什么这么绕,想想和JS的区别,最后终于恍然大悟! C#中事件绕的根本原因: C#的方法,它 ...

  4. Linux-ssh配置

  5. 自己实现一个简易web服务器

    一个web服务器是网络应用中最基础的环节. 构建需要理解三个内容: 1.http协议 2.socket类 3.服务端实现原理 1.1 HTTP http请求 一般一个http请求包括以下三个部分: 1 ...

  6. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  7. Unable to download data from http://ruby.taobao.org/ & don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

    安装cocoapods,记录两个问题! 1.镜像已经替换成了 http://ruby.taobao.org/, 还是不能不能安装cocoapods, 报错:Unable to download dat ...

  8. 关于Oracle表连接

    表连接注意left join on与where的区别: select * from dept; select * from emp; select * from emp a right outer j ...

  9. php-cgi not found

    错误描述 用PHPStorm运行PHP脚本的时候浏览器提示"502 Bad Gateway",PHPStorm提示"php-cgi not found". 系统 ...

  10. 如何在github上下载单个文件夹?

    作者:ce ge链接:https://www.zhihu.com/question/25369412/answer/96174755来源:知乎著作权归作者所有,转载请联系作者获得授权. Git1.7. ...