微信扫一扫打赏支持

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>

 

posted @ 2018-05-12 17:59  范仁义  阅读(6274)  评论(0编辑  收藏  举报