研究發(fā)現(xiàn):屬性(變量)可分為三類(對象屬性、全局變量和局部變量)
對象屬性:聲明時(shí)以“this.”開頭,只能被“類的實(shí)例”即對象所調(diào)用,不能被“類內(nèi)部(對外不對內(nèi))”調(diào)用;全局變量:聲明時(shí)直接以變量名開頭,可以任意調(diào)用(對內(nèi)對外);局部變量:只能被
“類內(nèi)部(對內(nèi)不對外)”調(diào)用。
JS函數(shù)的聲明與訪問原理
<script type="text/javascript">
//類
var testClass = function(){
//對象屬性(對外不對內(nèi),類調(diào)用)
this.age ="25";
//全局變量(對內(nèi)對外)
name="jack";
//局部變量(對內(nèi)不對外)
var address = "beijing";
//全局函數(shù)(對內(nèi)對外)
add = function(a,b){
//可訪問:全局變量和局部變量
multiply(a,b);
return a+b;
}
//實(shí)例函數(shù)(由類的對象調(diào)用)
this.minus = function(a,b){
//可以訪問:對象屬性、全局變量和局部變量
return a-b;
}
//局部函數(shù)(內(nèi)部直接調(diào)用)
var multiply = function(a,b){
//只能訪問:全局變量和局部變量
return a*b;
}
}
//類函數(shù)(由類名直接調(diào)用)
testClass.talk= function(){
//只能訪問:全局變量和全局函數(shù)
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));
}
}
//原型函數(shù)(由類的對象調(diào)用)
testClass.prototype.walk = function(){
//只能訪問:全局變量和全局函數(shù)
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>
下面看看如何調(diào)用:
<script type="text/javascript">
//獲取一個(gè)cbs類的實(shí)例
var cbs= new testClass();
//調(diào)用類的對象屬性age
alert("age:"+cbs.age);
//獲取類函數(shù)talk的實(shí)例
var talk = new testClass.talk();
//調(diào)用類函數(shù)的實(shí)例函數(shù)
talk.what();
//獲取原型函數(shù)walk的實(shí)例
var walk = new cbs.walk();
//調(diào)用原型函數(shù)的實(shí)例函數(shù)
walk.where();
</script>