1. 程式人生 > >私有變量

私有變量

class 基本 prot 原型 作用域 特權 ger logs ons

靜態私有變量

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

私有變量