本人对JS的高级编程也只是略知一二,近段时间老实遇到JS问题,索性做一个探索性的研究,现在把探索的结果记录下来:一来可以自己以后看看;二来供初学者学习。欢迎JS高手给予指点,发现问题请留言。
研究发现:我们可以将属性(变量)分为三类(对象属性,全局变量和局部变量),下面我来对三类属性(变量)的声明方法和访问权限做一下探究。
对象属性:声明时以“this.”开头,只能被“类的实例”即类的对象所调用,不能被“类内部”调用。
全局变量:声明时直接以变量名开头,可以被“类函数”、“原型函数”和“类内部”所调用。
局部变量:只能被“类内部”调用。
注: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>