當建立一個類別的時候,如果希望下面new出來的每個類別都擁有一些通用的變數或其他的函數,這個this關鍵字這是最好的方式。
當然,既然是物件導向的語言,必然存在存取權限的問題,這裡也和this關鍵字息息相關。下面我們來示範一個例子來說明這個類別的存取權限的問題.
////capo
var name="abc";//var聲明的都是類別內部的私人變量,外部無法存取
var age = 20;
this.name2="edg";/// this聲明的是公開變量,外部可以訪問
this.show=function(){//shou方法是公開的方法,可以外部訪問,而且可以訪問類內部私有方法
window. alert(name);
}
function show2(){//shouw2方法是類別內部的私人方法,無法外部存取
} 🎜>var p1 = new Person();
document.writeln(p1.name2 p1.name);
p1.show();
//Person Person(){
var name="abc";//var宣告的都是類別內部的私人變量,外部無法存取
var age = 20;
this.name2="edg ";//this宣告的是公開變量,外部可以存取
this.show=function(){//shou方法是公開的方法,可以被外部訪問,而且可以存取類別內部私有方法
window.alert(name);
}
function show2(){//shouw2方法是類別內部的私有方法,無法外部存取
}
var p1 = new Person();
document.writeln(p1.name2 p1.name);
p1.show();
這個Person其實就是一個類別Person ,類別名稱就是Person,其中宣告的變量,var開頭的都是私有變量,只能在類別的內部實現訪問
問,而透過this關鍵字聲明的變數是公有的變量,可以在外部存取。當然,只需要公開一個方法,就可以實現外部訪
問類別內部的私有變量,這個this.show=function(){}就是聲明一個共有方法,在類別的外部也是可以呼叫的。當然,以此
類別推,直接宣告的方法是私有的方法/
下面再看一個例子
複製程式碼
function test(){
this. v);
}
var v = 902;
window.test();
function test(){
alert(this.v);
}
var v = 902;
window.test();
程式碼很短,這個的意思是,誰調用的這個方法,這個this就是指的那個對象,比如,window對象調用的test方法,
所以在test方法內部,這個this,v就是指在window也就是外部全域是否定義了一個v變量,透過查看可以知道,定義了
一個var v = 902;所以這個方法呼叫的其實就是v的值.