當創建一個類的時候,如果希望下面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的值.