私有变量

构造函数的私有变量,属性和方法都是独立的。

 1 window.onload = function() {
 2     var person = new Person("Li");
 3     alert(person.getName());        // Li
 4     person.setName("Joe");
 5     alert(person.getName());        // Joe
 6 
 7     var person2 = new Person("Ji");
 8     alert(person2.getName());        // Ji
 9     person.setName("Joe");
10     alert(person2.getName());        // Ji
11 };
12 
13 /**
14  * 人(每次调用构造函数都会重新创建方法)
15  * @param {string} name 名字
16  */
17 function Person(name) {
18     this.getName = function(){
19         return name;
20     };
21 
22     this.setName = function(value){
23         name = value;
24     }
25 }

静态私有变量,属性和方法都是共享的。

 1 window.onload = function() {
 2     var person = new Person("Li");
 3     alert(person.getName());        // Li
 4     person.setName("Joe");
 5     alert(person.getName());        // Joe
 6 
 7     var person2 = new Person("Ji");
 8     alert(person2.getName());        // Ji
 9     person.setName("Joe");
10     alert(person2.getName());        // Joe
11 };
12 
13 /**
14  * 静态私有变量,属性和方法都是共享的,不会重复创建,但是实例之间会互相影响
15  * @return {string} 姓名
16  */
17 (function(){
18     var name = "";
19 
20     Person = function(value){
21         name = value;
22     };
23 
24     Person.prototype.getName = function(){
25         return name;
26     }
27 
28     Person.prototype.setName = function(value){
29         name = value;
30     };
31 })();

 增强的模块模式,单例的特权方法。

 1 window.onload = function() {
 2     alert(application.getComponentCount());    // 1
 3     application.registerComponent("hello");
 4     alert(application.getComponentCount());    // 2
 5 };
 6 
 7 /**
 8  * 增强模块模式,单例的特权方法
 9  * @return {object}
10  */
11 var application = function(){
12     // 私有变量和函数
13     var components = new Array();
14 
15     // 初始化
16     components.push(new String("hello"));
17 
18     // 创建apllication的一个局部副本
19     var app = new String();
20 
21     // 公共接口
22     app.getComponentCount = function(){
23         return components.length;
24     };
25 
26     app.registerComponent = function(str){
27         if (typeof str == "string") {
28             components.push(str);
29         }
30     };
31 
32     // 返回这个副本
33     return app;
34 }();
原文地址:https://www.cnblogs.com/tinyTea/p/9946985.html