js私有变量
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>