JavaScript 伪装命名空间(Facking NameSpace)

命名空间(NameSpace)

A container for variables and functions, typically to keep variables and functions with the same name separate.
就是一个装着变数与函数的容器,用来使相同名称的变数或函数不会互相干扰(避免命名冲突)。

但是JavaScript没有命名空间,但是我们可以利用物件来解决这个问题
EX:下面是在全域空间的两个同名变数

var name = 'Ivy';
var name = 'Joanna';

console.log(name); //Joanna

都是全域物件,下面的会覆写上面的。

而在JavaScript用物件可以帮助我们使两变数不冲突,也就是我们用物件当容器。
EX:这里建立两个物件

var p1 = {};
var p2 = {};

p1.name = 'Ivy';
p2.name = 'Joanna';

console.log(p1.name); //Ivy 

p1 与 p2 这两个变数变成容器,而不会使里面的变数因为同样名称而冲突。

当然我们也可以用物件实体语法来建立p1 p2 (可以看上一篇)

var p1 = {name:'Ivy'};
var p2 = {name:'Joanna'};

console.log(p1.name); //Ivy 

检查命名冲突

我们可能使用别人写的程序档案或是忘了自己之前写好的的程序而导致命名冲突,
例如:
var aa=aa || {name:'Joanna'};
不知道aa 的变数名有没有用过,所以检查,如果已经用过,就给前面用过的的aa,如果还没,就是{name:'Joanna'}。

例如这是 Todo.html


<script type="text/javascript"src="Todo.js"></script>
<script type="text/javascript">
    var aa=aa||{name:'uu'}
	console.log(aa.name)
</script>
</body>
</html>

这是Todo.js

var aa={name:'ii'}

如此console出来是 ii, 没有被覆盖。

参考:
yehyeh's Notepad
js-tutorials Namespaces in JavaScript


<<:  [Day6] 开发环境建置

>>:  CRUD的UD / ICON / confirmDialog - day06

Day 2 Mac 环境小工具

写在前面 上课前就常常听说 Ruby on Rails 在 Window 作业系统环境里很麻烦很难用...

天翼云盘免安装客户端下载文件

当天翼云盘下载按钮变灰没办法点击,如下图 可使用审核元素使之可以点击和获取下载链接 搜索 btn b...

Day 25: Macie 简介及操作

What is Amazon Macie? Macie是一项全代管的服务,它透过机器学习来辨别你的S...

Day31:HTML(29) form(8)

输入类型"周" 将”input type="week"“允许...

Day27 - 使用 LIFF 表单收集用户讯息

LINE Developers:https://developers.line.biz/zh-ha...