私有變量
阿新 • • 發佈:2017-06-02
class 基本 prot 原型 作用域 特權 ger logs ons
靜態私有變量
13:43:19
作用:隱藏不應該被直接修改的數據
- 在函數內部創建閉包,可以通過自己的作用域鏈訪問這些變量
1 /*demo1*/ 2 /*在函數內部創建閉包,可以通過自己的作用域鏈訪問這些變量*/ 3 /*基本模型*/ 4 function MyObject(){ 5 // 私有變量和私有函數 6 var privateVariable = 10; 7 function privateFunction(){ 8 returnfalse; 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
私有變量