javascript是面向?qū)ο蟮?,js每個內(nèi)建對象都是從object派生出來的,這樣就有繼承,多態(tài)和重構(gòu)三個面向?qū)ο蟮奶匦?,即使現(xiàn)在js是基于prototype的偽繼承,但是總體思想是一個面向?qū)ο蟮恼Z言。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
與其它的語言相比,JavaScript中的“對象”總是顯得不是那么合群。一些新人在學(xué)習(xí)JavaScript面向?qū)ο髸r,往往也會有疑惑:為什么JavaScript(直到ES6)有對象的概念,但是卻沒有像其他的語言那樣,有類的概念呢?為什么在JavaScript對象里可以自由添加屬性,而其他的語言卻不能呢?
甚至一些爭論中,有人強調(diào),JavaScript并非“面向?qū)ο蟮恼Z言”,而是“基于對象的語言”,這個說法一度流傳甚廣,而事實上,我至今遇到的持有這一說法的人中,無一能夠回答“如何定義面向?qū)ο蠛突趯ο蟆边@個問題。
實際上,基于對象和面向?qū)ο髢蓚€形容詞都出現(xiàn)在了JavaScript標(biāo)準(zhǔn)的各個版本當(dāng)中。我們可以先看看JavaScript標(biāo)準(zhǔn)對基于對象的定義,這個定義的具體內(nèi)容是:“語言和宿主的基礎(chǔ)設(shè)施由對象來提供,并且ECMAScript程序即是一系列互相通訊的對象集合”。這里的意思根本不是表達弱化的面向?qū)ο蟮囊馑迹炊潜磉_對象對于語言的重要性。
那么,在本篇文章中,我會嘗試讓你去理解面向?qū)ο蠛蚃avaScript中的面向?qū)ο缶烤故鞘裁础?/p>
什么是對象?
我們先來說說什么是對象,因為翻譯的原因,中文語境下我們很難理解“對象”的真正含義。事實上,Object(對象)在英文中,是一切事物的總稱,這和面向?qū)ο缶幊痰某橄笏季S有互通之處。中文的“對象”卻沒有這樣的普適性,我們在學(xué)習(xí)編程的過程中,