JavaScript面向對象程序設計(1): 前言

基於對象還是面向對象?

 

面向對象技術是現代軟件開發中的重要技術之一。面向對象變成的好處毋庸置疑,現在的主流語言如Java、C++都是面向對象的。現在的面向對象理論更多的是使用Java或C++進行描述,究其根源,在於這些語言都是傳統的面嚮對象語言,具有面向對象理論所指明的一切特性:類、封裝、繼承、多態等等。

 

相比而言,一些動態語言如JavaSript就顯得不那麼面向對象——至少,在JavaScript中並沒有類class這一關鍵字。但是,在JavaScript中並不是沒有類的概念。於是有人說,JavaScript是基於對象的語言,而不是面向對象的語言。

 

面向對象的語言具有三個特性:封裝、繼承和多態,三者缺一不可;基於對象的語言通常僅僅是使用對象,其實現的是封裝,並沒有提供後兩種特性。的確,從語法上來說,JavaScript並沒有特定的語法或者在語言級別上來實現繼承和多態。但是,這並不妨礙我們使用這些特性。這是因爲,JavaScript是一種靈活的語言,它是相當的靈活,以至於這些並沒有提供的東西,更確切的說,是沒有明確的表明的東西,都是可以實現和使用的!那麼,你還能說JavaScript是基於對象而不是面向對象的嗎?

 

面向對象也是一種思想,任何語言,包括C語言,同樣可以使用面向對象的思想去解決現實生活中的各種問題。到底是基於對象還是面向對象,這些概念讓計算機哲學家門去爭論吧——相信他們的爭論最終也會和先有雞還是先有蛋的問題一樣的結果——我們所要做的,是要使用這種語言提供的機制去解決我們的問題。

 

爲什麼要有JavaScript的面向對象編程?

 

這個問題很嚴肅——這取決你問題的規模和應用的範圍。就像JavaEE和PHP一樣:PHP能實現的東西,JavaEE都能實現,那麼,爲什麼還要有PHP?因爲JavaEE太複雜了,對於一些簡單的系統,根本沒有必要是使用它,也就是所謂的“殺雞焉用牛刀”。

 

JavaScript主要應用於Web開發中。在傳統的Web開發模式中,JavaScript起到的是一些點綴的作用,只完成很有限的功能,例如表單驗證等。於是,JavaScript多被當做一種過程性語言使用,很難完成複雜的功能。而今天Web2.0的時代,Ajax大行其道,很多複雜的腳本成爲其必須的組成部分。在Ajax應用中利用JavaScript面向對象編程風格,能夠使邏輯更加清晰,也更有利於問題的解決。

 

如果你想用JavaScript編寫一個庫,比如ExtJS或者YUI,很難想象你的類庫不使用面向對象的編程風格——否則的話,無論是對你還是對使用者的智力都將是一個前所未有的考驗!或許,自從面向對象思想提出之後,已經很難有類庫不使用面向對象的方式實現了,即便是C語言的庫諸如gtk+,也是用C語言將面向對象的思想表現的天衣無縫。面向對象的思想對於大型程序的編寫和使用具有不可替代的作用。

 

本系列文章將試圖向讀者闡述JavaScript的面向對象程序設計。儘管JavaScript中具有很多瀏覽器相關的概念,如document等內置對象,但是本系列將不涉及這些問題,並且將假設讀者已經有JavaScript基礎的語法知識等。本系列文章不會從頭開始講述JavaScript的語法,僅僅從純粹的面向對象角度審視JavaScript,或許,你將會看到一個教程:面向對象程序設計——JavaScript語言描述。這纔是本系列文章的目的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章