JS高级编程——属性/变量 访问权限

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

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


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


<script type="text/javascript">
//类
var Hdx = function(){
//对象属性(只能被“类的实例”和“实例函数”调用)
this.age ="25";
//全局变量(只能被“类函数”、“原型函数”和“类内部”调用)
name="jack";
//局部变量(只能被“类内部”调用)
var address = "beijing";

//全局函数(内部/全局直接调用)
add = function(a,b){
//只能访问:全局变量和局部变量
multiply(a,b);
return a+b;
}
//实例函数(由类的对象调用)
this.minus = function(a,b){
//可以访问:对象属性、全局变量和局部变量
return a-b;
}
//局部函数(内部直接调用)
var multiply = function(a,b){
//只能访问:全局变量和局部变量
return a*b;
}
}


//类函数(由类名直接调用)
Hdx.talk= function(){
//只能访问:全局变量和全局函数
this.what = function(){
alert("What can we talk about?");
about();
}

var about = function(){
alert("about name:"+name);//jack
alert("about add(1,1):"+add(1,1));//2
}
}


//原型函数(由类的对象调用)
Hdx.prototype.walk = function(){
//只能访问:全局变量和全局函数
this.where = function(){
alert("Where can we go?");
go();
}

var go = function(){
alert("go name:"+name);//jack
alert("go add(1,1):"+add(1,1));//2
}
}
</script>


下面看看如何调用:

<script type="text/javascript">
//获取一个Hdx类的实例
var hdx = new Hdx();
//调用类的对象属性age
alert("age:"+hdx.age);

//获取类函数talk的实例
var talk = new Hdx.talk();
//调用类函数的实例函数
talk.what();

//获取原型函数walk的实例
var walk = new hdx.walk();
//调用原型函数的实例函数
walk.where();
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值