在定义 JS module 时避免 namespace 污染

所谓 JS Module 就是可以被其他程序,例如HTML 使用的 JS 集合。很多 JS 库都是用单独的.js文件来发布自己的功能,这就是module的方式。
module 创建时最常见的问题就是namespace污染,也就是在被应用时使用的名字可能会与其他的变量有冲突。如,一个module定义为 hello,那么如果在被引用的上下文中还存在一个 hello 变量,这就产生了冲突,应该比较好理解。那么如何解决这个问题呢。最简单的是使用更加独特的名字,这个也会承担一些风险,毕竟独特的绝对性有多大,很难估计。所以,人们就使用类似 Java 类包的命名方式,在文件系统中,使用层级目录存放 JS 文件,也就是 module,然后再定义的使用,使用层级的定义方式,这样可以很有效的解决这个问题。如下面的例子:

如果要定义一个层级为 js.dada.dada 的module,首先在文件系统中要手工创建这样的一个目录,比较好理解。然后就要定义这个 dada.js 文件,关于命名的片段为:

var js = {} //使用 var  定义最顶级的命名,然后依次向下进行定义。最后,以完整的命名方式进行函数功能的定义。
js.dada={}
js.dada.dada={}

js.dada.dada.Circle  = function(){return 'Circle'} //  dada.Circle  = function(){return 'Circle'}   是错误的定义方式。


在使用这个module时,script 语句也需要使用完整路径进行调用。例如:

var result = js.dada.dada.Circle();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值