當建立一個類的時候,如果希望下面new出來的每個類都擁有一些通用的變數或者其他的函數,這個this關鍵字這是最好的方式。
當然,既然是物件導向的語言,必然存在存取權限的問題,這裡也和this關鍵字息息相關。下面我們來示範一個例子來說明一下這個類的存取權限的問題.
複製代碼 代碼如下://Person類
function 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類 www.jb51.net
function 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,其中聲明的變數,var開頭的都是私人變數,只能在類的內部實現訪
問,而通過this關鍵字聲明的變數是公有的變數,可以在外部存取。當然,只需要公開一個方法,就可以實現外部訪
問類內部的私人變數,這個this.show=function(){}就是聲明一個共有方法,在類的外部也是可以調用的。當然,以此
類推,直接聲明的方法是私人的方法/
下面再看一個例子
複製代碼 代碼如下:function test(){
alert(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的值.