原型对象上的私有成员
5.原型对象上的私有成员
==================
**知点点**
1.原型对象
2.共享私有成员
-----------------------------------------------------
1.原型对象
--------
- 任何函数都有一个原型对象属性
- 定义在原型对象上的成员,被构造函数所有实例所共享
-----------------------------------------------------
2.共享私有成员
-----------
- 私有成员: 函数的局部变量
- 共享私有成员,可以提高代码执行效率,实现代码复用,节省空间
-----------------------------------------------------
### 示例代码: code/demo05.html
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>原型对象上的私有成员</title>
</head>
<body>
<script>
//面临的问题
//1. 将私有成员与构造函数一起使用时,每一次的实例化,都会重新创建这些私有成员
//2. 凡是通过this添加到构造函数中的成员,也会面临同样的问题
// 为了避免重复创建私有成员,可以将这些需要共享的私有成中,创建到构造函数的原型对象上
// 原型对象,就是一个对象,如果原型的constructor和__proto__属性,你认为不重要,可以直接用字面量来创建它
var Stu = function (siteName) {
// 私有成员
var site = siteName;
// 公有函数(闭包)特权方法
this.getSite = function () {
return site;
};
};
// 将共享的私有成员,放在构造函数的原型对象上
// 参数前面的案例, 可以通过一个自执行函数来实现这个功能
// 只要这个自执行函数(即时函数)返回一个对象字面量即可
Stu.prototype = (function (){
// 共享的私有成员
var browser = 'Chrome';
// 共享的特权方法
return {
getBrowser: function () {
return browser;
}
}
}());
// 实例化
var stu = new Stu('0133.cn');
// 实例的特权方法
console.log( stu.getSite() );
// 原型的特权方法
console.log( stu.getBrowser() );
</script>
</body>
</html>
```