首页 > 代码库 > 私有变量
私有变量
静态私有变量
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
私有变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。