在面向對象的思想中,最核心的概念之一就是類。一個類表示了具有相似性質的一類事物的抽象,通過實例化一個類,可以獲得屬於該類的一個實例,即對象。
在JavaScript中定義一個類的方法如下:
function class1(){
//類成員的定義及構造函數
}
這裡class1既是一個函數也是一個類。可以將它理解為類的構造函數,負責初始化工作。
使用new操作符獲得一個類的實例 在前面介紹基本對象時,已經用過new操作符,例如:
new Date();
表示創建一個日期對象,而Date就是表示日期的類,只是這個類是由JavaScript內部提供的,而不是由用戶定義的。
new操作符不僅對內部類有效,對用戶定義的類也同樣有效,對於上節定義的class1,也可以用new來獲取一個實例:
function class1(){
//類成員的定義及構造函數
}
var obj1=new class1();
拋開類的概念,從代碼的形式上來看,class1就是一個函數,那麼是不是所有的函數都可以用new來操作呢?是的,在JavaScript中,函數和類就是一個概念,當對一個函數進行new操作時,就會返回一個對象。如果這個函數中沒有初始化類成員,那就會返回一個空的對象。例如:
//定義一個hello函數
function hello(){
alert("hello");
}
//通過new一個函數獲得一個對象
var obj=new hello();
alert(typeof(obj));
從運行結果看,執行了hello函數,同時obj也獲得了一個對象的引用。當new一個函數時,這個函數就是所代表類的構造函數,其中的代碼被看作為了初始化一個對象。用於表示類的函數也稱為構造器。