JavaScript物件導向程式設計(5) 類

來源:互聯網
上載者:User

類是物件導向程式設計的核心概念之一。一個類代表了具有相似屬性的一類事物的抽象。從本篇開始 ,我們將正式的進入JavaScript的物件導向部分。首先需要注意的是,在JavaScript中並沒有“類 ”這一關鍵字——在大多數語言中都是使用class作為關鍵字的。所以,這裡的類就成 了一個概念,它沒有明確的文法標誌。

1.類和建構函式

前面說過,在JavaScript中並沒有明確的類的概念。實際上,我們給出的只是類的建構函式。類的構 造函數構成了這個類的全部內容。既然叫做建構函式,它也是一個普通的函數,沒有什麼不同之處。因 此,我們能夠很輕易的定義出一個建構函式:

function Person(name, age) {
 this.name = name;
 this.age = age;
 this.show = function() {
  alert("Hello, my name is " + this.name + ", my age is " + this.age);
 };
}

這裡,我們定義了一個類 Person,它有兩個屬性:name和age;有一個方法:show。看上去和其他語 言的類的定義沒有什麼不同。其實,這裡最大的不同就是在於這個關鍵字function。我們使用了定義函 數的方式定義了一個類。

2.new

定義出來類之後,需要建立類的對象。同其他語言一眼,JavaScript也使用new操作符建立對象。具 體代碼如下:

var bill = new Person("Bill", 30);
alert(bill.name);
alert(bill["age"]);
bill.show();

這裡使用new建立一個Person類的對象。和其他語言類似,new之後是該類的建構函式。當建立對象之 後,就可以像前面的章節中說到的一樣,使用.或者[]對屬性進行訪問。

注意一下,這裡的建構函式就是一個普通的函數,那麼,是不是所有的函數都可以使用new操作符呢 ?答案是肯定的。那麼,這個new操作符到底做了什麼呢?

當使用new操作符的時候,首先JavaScript會建立一個空的對象,然後將會對這個對象進行初始化。 用什麼來初始化呢?當然就是你調用的那個建構函式了。最後,這個建立的對象將返回給調用者,於是 ,我們就可以使用這個對象了。

3.prototype

prototype是原型的意思。在JavaScript中,每個對象都有一個prototype屬性。這個屬性指向一個 prototype對象。這就是原型屬性和原型對象的概念。

每個對象都有一個prototype屬性,建構函式是一個普通的函數,而函數也是一個對象,因此,構造 函數也有一個 prototype屬性。而每個prototype對象都有一個constructor屬性,這個prototype對象的 constructor屬性指向這個prototype屬性所在的建構函式本身。也就是說,new操作符要保證產生的對象 的prototype屬性和建構函式的prototype屬性是一致的。

有點迷糊了不是?看一下下面的圖,無論怎樣,都要保證這個圖所示的關係式正確的!

需要大家注意的是,這個prototype對象是JavaScript的物件導向的基礎,包括繼承等的實現都是使 用prototype。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.