javascript是基于對(duì)象的;它是一種基于對(duì)象的腳本語言,不僅可以創(chuàng)建對(duì)象,也能使用現(xiàn)有的對(duì)象。JavaScript標(biāo)準(zhǔn)對(duì)于基于對(duì)象的定義:語言和宿主的基礎(chǔ)設(shè)施由對(duì)象來提供,并且JavaScript程序即是一系列相互通訊的對(duì)象集合。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
你好,我是前阿里手淘前端負(fù)責(zé)人winter,這篇文章來自于我在極客時(shí)間專欄「重學(xué)前端」中講解JavaScript的部分。
與其它的語言相比,JavaScript中的“對(duì)象”總是顯得不是那么合群。一些新人在學(xué)習(xí)JavaScript面向?qū)ο髸r(shí),往往也會(huì)有疑惑:為什么JavaScript(直到ES6)有對(duì)象的概念,但是卻沒有像其他的語言那樣,有類的概念呢?為什么在JavaScript對(duì)象里可以自由添加屬性,而其他的語言卻不能呢?
甚至一些爭論中,有人強(qiáng)調(diào),JavaScript并非“面向?qū)ο蟮恼Z言”,而是“基于對(duì)象的語言”,這個(gè)說法一度流傳甚廣,而事實(shí)上,我至今遇到的持有這一說法的人中,無一能夠回答“如何定義面向?qū)ο蠛突趯?duì)象”這個(gè)問題。
實(shí)際上,基于對(duì)象和面向?qū)ο髢蓚€(gè)形容詞都出現(xiàn)在了JavaScript標(biāo)準(zhǔn)的各個(gè)版本當(dāng)中。我們可以先看看JavaScript標(biāo)準(zhǔn)對(duì)基于對(duì)象的定義,這個(gè)定義的具體內(nèi)容是:“語言和宿主的基礎(chǔ)設(shè)施由對(duì)象來提供,并且ECMAScript程序即是一系列互相通訊的對(duì)象集合”。這里的意思根本不是表達(dá)弱化的面向?qū)ο蟮囊馑?,反而是表達(dá)對(duì)象對(duì)于語言的重要性。
那么,在本篇文章中,我會(huì)嘗試讓你去理解面向?qū)ο蠛蚃avaScript中的面向?qū)ο缶烤故鞘裁础?/p>
什么是對(duì)象?
我們先來說說什么是對(duì)象,因?yàn)榉g的原因,中文語境下我們很難理解“對(duì)象”的真正含義。事實(shí)上,Object(對(duì)象)在英文中,是一切事物的總稱,這和面向?qū)ο缶幊痰某橄笏季S有互通之處。中文的“對(duì)象”卻沒有這樣的普適性,我們?cè)趯W(xué)習(xí)編程的過程中,