命名空间模式
1.命名空间模式
============
**知识点**
1.全局对象window
2.自定义命名空间
3.命名空间的作用
--------------------------------------------------------
1.全局对象window
--------------
全局添加的成员会自动成为全局对象window的属性
--------------------------------------------------------
2.自定义命名空间
-------------
可以收编用户自定义的数据,用户数据自动成为命名空间对象的属性
--------------------------------------------------------
3.命名空间的作用
-------------
- 减少全局变量数量;
- 避免命名冲突和过长的标识符名称
- 防止与第三方代码库命名冲突
--------------------------------------------------------
### 示例代码: code/demo01.html
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>命名空间模式</title>
</head>
<body>
<script>
// 命名空间模式优点:
// 1.减少全局变量数量;
// 2.避免命名冲突和过长的标识符名称
// 3.防止与第三方代码库命名冲突
var str = 'This a string';
var arr = [1,2,3,4];
var obj = {};
function Stu() { //构造函数
}
// 你会发现,以上数据全全部创建到全局对象window上,这是不推荐的,也不可取的
// 这时可以考虑,自定义一个全局变量,做为容器,来收集这些自定义的成员
// 创建全局对象,并初始化为一个空的对象字面量,对象是键值对集合,非常适合收编这些全局成员
// 将这个全局对象,视做命名空间, 用户自定义的数据,全部做为这个空间的成员属性
var APP = {};
// 将以上数据做为APP对象的属性,进行添加
APP.str = 'This a string';
APP.arr = [1,2,3,4];
APP.obj = {};
APP.Stu = function () {
}
// 现在我们用一个全局对象,就收编了所有的用户自定义数据,而之前需要在全局对象window上创建多个全局成员
// 显示,使用这个叫做命名空间的自定义全局变量, 是非常有必要的
</script>
</body>
</html>
```