1 js中一個函數就是一個類,可以將它理解為類的構造函數,負責初始化工作。
2 可以通過new的操作符獲得一個類的實例。
例如:
//定義一個hello函數
function hello(){
alert(“hello”);
}
//通過new一個函數獲得一個對象
var obj=new hello();
alert(typeof(obj));
3 對象的屬性和方法
其他語言中,對象一旦生成,就不可更改,要為一個對象添加、修改成員必須要在對應的類中修改,並重新實例化,程序也必須重新編譯。JavaScript提供瞭靈活的機制來修改對象的行為,可以動態添加、修改、刪除屬性和方法。例如:先用類Object來創建一個空對象user:
var user=new Object();
(1) 獲取屬性或方法
a) 對象名.屬性(方法)名
b) 對象名[“屬性(方法)名”]
(2) 添加屬性
a) 添加屬性:
user.name=”jack”;
user.age=21;
user.sex=”male”;
b) 添加方法
user.alert=function(){
alert(“myname is:”+this.name);
}
(3) 修改屬性和方法
修改一個屬性和方法的過程就是用新的屬性替換舊的屬性,例如:
user.name=”tom”;
user.alert=function(){
alert(“hello,”+this.name);
}
(4) 刪除屬性和方法
刪除一個屬性和方法的過程也很簡單,就是將其置為undefined:
user.name=undefined;
user.alert=undefined;
這樣就刪除瞭name屬性和alert方法。
4 無類型對象
傳統的面向對象語言中,每個對象都會對應到一個類。上一節講this指針時提到,JavaScript中的對象其實就是屬性(方法)的一個集合,並沒有嚴格意義上類的概念。所以它提供瞭一種簡單的方式來創建對象,即大括號({})語法:
{
property1:statement,
property2:statement2,
…,
propertyN:statmentN
}
通過大括號括住多個屬性或方法及其定義(這些屬性或方法用逗號隔開),來實現對象的定義,這段代碼就直接定義個瞭具有n個屬性或方法的對象,其中屬性名和其定義之間用冒號(:)隔開。
5 prototype原型對象
prototype 對象是實現面向對象的一個重要機制。每個函數(function)其實也是一個對象,它們對應的類是“Function”,但它們身份特殊,每個函數對象都具有一個子對象prototype。即prototype表示瞭該函數的原型,而函數也是類,prototype就是表示瞭一個類的成員的集合。當通過 new來獲取一個類的對象時,prototype對象的成員都會成為實例化對象的成員。