私有变量

静态私有变量

13:43:19

作用:隐藏不应该被直接修改的数据

  1.       在函数内部创建闭包,可以通过自己的作用域链访问这些变量
 1 /*demo1*/
 2       /*在函数内部创建闭包,可以通过自己的作用域链访问这些变量*/
 3       /*基本模型*/
 4       function MyObject(){
 5             // 私有变量和私有函数
 6             var privateVariable = 10;
 7             function privateFunction(){
 8                   return false;
 9             }
10             // 特权方法
11             this.publicMethod = function (){
12                   privateVariable++;
13                   return privateFunction();
14             }
15       }
16 /*demo2==>私有变量*/
17 /*实例*/
18       /*利用私有和特权成员,隐藏不应该被直接修改的数据*/
19       /*注:特权方法getName()和setName()都可以在构造函数
20       *外使用,都有权访问私有变量name。通过作用域链访问name*/
21       /*===缺点:每个实例都会创建同样一组新方法,使用
22       *==>使用静态私有变量解决问题
23       */
24       function Person(name){
25             this.getName = function(){
26                   return name;
27             };
28             this.setName = function(value){
29                   name = value;
30             };
31       }
32       var person = new Person('Nicholas');
33       console.log(person.getName());//Nicholas
34       person.setName('Greg');
35       console.log(person.getName());//Greg

 

 1       /*基本模型*/
 2       (function(){
 3             // 私有变量和私有函数
 4             var privateVariable = 10;
 5             function privateFunction(){
 6                   return  false;
 7             }
 8             // 构造函数
 9             MyObject = function(){
10 
11             }
12             // 公有/特权方法
13             /*注:由于特权方法是在原型上定义,所有实例使用同一函数*/
14             MyObject.prototype.publicMethod = function(){
15                   privateVariable++;
16                   return privateFunction();
17             }
18       })();
19       /*基本实例*/
20       (function(){
21             var name='';
22             Person = function(value){
23                   name = value;
24             };
25             Person.prototype.getName = function(){
26                   return name;
27             };
28             Person.prototype.setName = function(value){
29                   name = value;
30             }
31       })();
32       var person1 = new Person('Nicholas');
33       console.log(person1.getName());//Nicholas
34       person1.getName('Greg');
35       console.log(person1.getName());//Gerg
36       var person2 = new Person('Michael');
37       console.log(person1.getName());//Michael
38       console.log(person2.getName());//Michael

 

posted @ 2017-06-02 13:48  =DLSS=webZT  阅读(130)  评论(0编辑  收藏  举报