js 高级编程-属性/变量-访问权限

来源:互联网 发布:手机图纸软件 编辑:程序博客网 时间:2024/04/30 07:07

先声明,抄别人的。

 

本人对JS的高级编程也只是略知一二,近段时间老实遇到JS问题,索性做一个探索性的研究,现在把探索的结果记录下来:一来可以自己以后看看;二来供初学者学习。欢迎JS高手给予指点,发现问题请留言。
         研究发现:我们可以将属性(变量)分为三类(对象属性,全局变量和局部变量),下面我来对三类属性(变量)的声明方法和访问权限做一下探究。

对象属性:声明时以“this.”开头,只能被“类的实例”即类的对象所调用,不能被“类内部”调用。
全局变量:声明时直接以变量名开头,可以被“类函数”、“原型函数”和“类内部”所调用。
局部变量:只能被“类内部”调用。


注:JS函数的声明与访问同理。

 

Js代码 复制代码
  1. <script type="text/javascript">   
  2. //类   
  3. var Hdx = function(){   
  4.   //对象属性(只能被“类的实例”和“实例函数”调用)   
  5.   this.age ="25";   
  6.   //全局变量(只能被“类函数”、“原型函数”和“类内部”调用)   
  7.   name="jack";   
  8.   //局部变量(只能被“类内部”调用)   
  9.   var address = "beijing";   
  10.      
  11.   //全局函数(内部/全局直接调用)   
  12.   add = function(a,b){   
  13.     //只能访问:全局变量和局部变量   
  14.     multiply(a,b);   
  15.     return a+b;   
  16.   }   
  17.   //实例函数(由类的对象调用)   
  18.   this.minus = function(a,b){   
  19.     //可以访问:对象属性、全局变量和局部变量   
  20.     return a-b;   
  21.   }   
  22.   //局部函数(内部直接调用)   
  23.   var multiply = function(a,b){   
  24.     //只能访问:全局变量和局部变量   
  25.     return a*b;   
  26.   }   
  27. }   
  28.   
  29.   
  30. //类函数(由类名直接调用)   
  31. Hdx.talk= function(){   
  32.   //只能访问:全局变量和全局函数   
  33.   this.what = function(){   
  34.     alert("What can we talk about?");   
  35.     about();   
  36.   }   
  37.      
  38.   var about = function(){   
  39.     alert("about name:"+name);//jack   
  40.     alert("about add(1,1):"+add(1,1));//2   
  41.   }   
  42. }   
  43.   
  44.   
  45. //原型函数(由类的对象调用)   
  46. Hdx.prototype.walk = function(){   
  47.   //只能访问:全局变量和全局函数   
  48.   this.where = function(){   
  49.     alert("Where can we go?");   
  50.     go();   
  51.   }   
  52.      
  53.   var go = function(){   
  54.     alert("go name:"+name);//jack   
  55.     alert("go add(1,1):"+add(1,1));//2   
  56.   }   
  57. }   
  58. </script> 

下面看看如何调用:

Js代码 复制代码
  1. <script type="text/javascript">   
  2. //获取一个Hdx类的实例   
  3. var hdx = new Hdx();   
  4. //调用类的对象属性age   
  5. alert("age:"+hdx.age);   
  6.   
  7. //获取类函数talk的实例   
  8. var talk = new Hdx.talk();   
  9. //调用类函数的实例函数   
  10. talk.what();   
  11.   
  12. //获取原型函数walk的实例   
  13. var walk = new hdx.walk();   
  14. //调用原型函数的实例函数   
  15. walk.where();   
  16. </script> 

 

原创粉丝点击