js私有變量
一、總結
1、在js函數中定義 this.name='張三'; (函數的屬性)外部是可以訪問的,但是 var name='張三'; (函數的私有變量),這樣定義的話外部沒有辦法訪問
2、js中的變量和方法:方法就是在變量后面加上()
3、函數屬性公用 變量私有:JavaScript沒用私有屬性的概念;所有的屬性都是公用的; 但是js中有私有變量的概念
4、函數的外部訪問:外部實例化一個對象,然后對象.屬性或者方法就可以訪問了 var p=new People() alert(p.getname())
5、特權方法(就是以定義屬性的方法去定義私有變量,因為屬性外部是可以訪問的,這個定義屬性的方法在函數內部可以訪問函數的私有變量):內部創建一個閉包,閉包可以訪問私有變量;因此創建用於訪問私有變量的公用方法,稱作特權方法 this.getsay=function(){ return say() }
二、js私有變量
私有變量
JavaScript沒用私有屬性的概念;所有的屬性都是公用的;
私有變量的概念:在任何函數中定義的變量,都是私有變量,因為不能在函數外部訪問這些變量;
- 私有變量:包括函數的參數/局部變量和在函數內部定義的其他函數;
- 特權方法:內部創建一個閉包,閉包可以訪問私有變量;因此創建用於訪問私有變量的公用方法,稱作特權方法
- 可以通過構造方法傳參來訪問私有變量
這種方法的缺點是會為每一個實例創建一組新的方法,不能實現共享。
三、代碼
1 <!DOCTYPE html> 2 <html lang="zh-cn"> 3 <head> 4 <meta charset="utf-8"> 5 <title>課堂演示</title> 6 </head> 7 <body> 8 <script> 9 /* 10 function sum(){ 11 var m=100; 12 } 13 alert(m) // 會報錯,私有變量(局部變量),外部無法訪問; 14 15 function People(){ 16 this.name='張三';//外部可以訪問,因為是屬性,this定義的就是屬性 17 this.age='30'; 18 this.say=function (){ 19 return '我是'+this.name+'......'; 20 } 21 } 22 */ 23 24 function People(){ 25 var name='張三'; // 私有變量; 外部無法訪問 26 var age='30'; 27 function say(){ // 私有函數; 28 return '我是......'; 29 } 30 31 this.getname=function(){ // 對外公共的特權方法; 外部可以訪問 32 return name; 33 } 34 35 this.getsay=function(){ 36 return say() 37 } 38 } 39 var p=new People() 40 alert(p.getname()) 41 alert(p.getsay()) 42 // alert(age) 43 // alert(say()) 44 </script> 45 </body> 46 </html>