javascript是面向對象的,js每個內建對象都是從object派生出來的,這樣就有繼承,多態(tài)和重構三個面向對象的特性,即使現在js是基于prototype的偽繼承,但是總體思想是一個面向對象的語言。
本教程操作環(huán)境:windows7系統、javascript1.8.5版、Dell G3電腦。
與其它的語言相比,JavaScript中的“對象”總是顯得不是那么合群。一些新人在學習JavaScript面向對象時,往往也會有疑惑:為什么JavaScript(直到ES6)有對象的概念,但是卻沒有像其他的語言那樣,有類的概念呢?為什么在JavaScript對象里可以自由添加屬性,而其他的語言卻不能呢?
甚至一些爭論中,有人強調,JavaScript并非“面向對象的語言”,而是“基于對象的語言”,這個說法一度流傳甚廣,而事實上,我至今遇到的持有這一說法的人中,無一能夠回答“如何定義面向對象和基于對象”這個問題。
實際上,基于對象和面向對象兩個形容詞都出現在了JavaScript標準的各個版本當中。我們可以先看看JavaScript標準對基于對象的定義,這個定義的具體內容是:“語言和宿主的基礎設施由對象來提供,并且ECMAScript程序即是一系列互相通訊的對象集合”。這里的意思根本不是表達弱化的面向對象的意思,反而是表達對象對于語言的重要性。
那么,在本篇文章中,我會嘗試讓你去理解面向對象和JavaScript中的面向對象究竟是什么。
什么是對象?
我們先來說說什么是對象,因為翻譯的原因,中文語境下我們很難理解“對象”的真正含義。事實上,Object(對象)在英文中,是一切事物的總稱,這和面向對象編程的抽象思維有互通之處。中文的“對象”卻沒有這樣的普適性,我們在學習編程的過程中,