研究發現:屬性(變量)可分為三類(對象屬性、全局變量和局部變量)
對象屬性:聲明時以“this.”開頭,只能被“類的實例”即對象所調用,不能被“類內部(對外不對內)”調用;全局變量:聲明時直接以變量名開頭,可以任意調用(對內對外);局部變量:只能被
“類內部(對內不對外)”調用。
JS函數的聲明與訪問原理
<script type="text/javascript">
//類
var testClass = 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;
}
}
//類函數(由類名直接調用)
testClass.talk= function(){
//只能訪問:全局變量和全局函數
this.what = function(){
alert("What can we talk about?");
about();
}
var about = function(){
alert("about name:"+name);
alert("about add(1,1):"+add(1,1));
}
}
//原型函數(由類的對象調用)
testClass.prototype.walk = function(){
//只能訪問:全局變量和全局函數
this.where = function(){
alert("Where can we go?");
go();
}
var go = function(){
alert("go name:"+name);
alert("go add(1,1):"+add(1,1));
}
}
</script>
下面看看如何調用:
<script type="text/javascript">
//獲取一個cbs類的實例
var cbs= new testClass();
//調用類的對象屬性age
alert("age:"+cbs.age);
//獲取類函數talk的實例
var talk = new testClass.talk();
//調用類函數的實例函數
talk.what();
//獲取原型函數walk的實例
var walk = new cbs.walk();
//調用原型函數的實例函數
walk.where();
</script>