首页 > 其他 > 详细

私有变量

时间:2017-06-02 13:56:49      阅读:263      评论:0      收藏:0      [点我收藏+]

静态私有变量

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

 

私有变量

原文:http://www.cnblogs.com/NB-JDzhou/p/6932946.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!