对象字面量的私有属性与特权方法
4.对象字面量的私有属性和特权方法
==========================
**知识点**
1.全局对象
2.自执行函数
------------------------------------------------
1.全局对象
--------
- 定义在函数之外的变量
- 作用域是贯穿整个应用的生命周期,处处可见
------------------------------------------------
2.自执行函数
----------
- 声明之后立即调用
- 可访问全局变量
> 该方式是: **模块模式** 的技术支撑,非常重要
------------------------------------------------
### 示例代码: code/demo04.html
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>对象字面量的私有属性与方法</title>
</head>
<body>
<script>
// 对象字面量
var obj1 = {
prop: 'property',
method: function () {
return this.prop;
}
};
console.log(obj1.prop);
console.log(obj1.method());
// 创建一个对象,我们的目标是将一个可以访问私有属性的特权方法做为属性赋值给它
var obj2 = {}; // 对象
// 创建自执行函数,将函数中的特权方法(可访问局部变量)赋值给外部对象
(function () {
// 私有成员
var name = 'peter';
// 公共方法, 给全局变量obj2赋值
obj2 = {
//特权方法
getName: function () {
return name;
}
};
}());
// 外部对象只能通过访问这个特权方法来访问私有属性
var res1 = obj2.getName();
console.log(res1);
// 如果你不习惯以上语法,也可以这样改写一下,效果是一样的
var obj3 = (function (){
// 私有成员
var name = 'peter';
// 公共方法, 给全局变量obj3赋值
return {
//特权方法
getName: function () {
return name;
}
};
}());
var res2 = obj3.getName();
console.log(res2);
</script>
</body>
</html>
```