私有变量
Posted =DLSS=webZT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了私有变量相关的知识,希望对你有一定的参考价值。
静态私有变量
13:43:19
作用:隐藏不应该被直接修改的数据
- 在函数内部创建闭包,可以通过自己的作用域链访问这些变量
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
以上是关于私有变量的主要内容,如果未能解决你的问题,请参考以下文章