Coding 第一奧義:面向?qū)ο缶幊?/h1>
本文轉(zhuǎn)載自微信公眾號(hào)「勾勾的前端世界」,作者西嶺 。轉(zhuǎn)載本文請(qǐng)聯(lián)系勾勾的前端世界公眾號(hào)。
到底什么是面向?qū)ο缶幊?/h3>
面向?qū)ο笫擒浖绦蛟O(shè)計(jì)開(kāi)發(fā)的一種方法,一種編程范式,其本質(zhì)是以建立模型體現(xiàn)出來(lái)的抽象思維過(guò)程和面向?qū)ο蟮姆椒ā?/p>
模型是用來(lái)反映現(xiàn)實(shí)世界中事物特征的,是對(duì)事物特征和變化規(guī)律的一種抽象,通過(guò)建立模型而達(dá)到的抽象是人們對(duì)客體認(rèn)識(shí)的深化。
什么是對(duì)象?
對(duì)象是對(duì)概念的具體化體現(xiàn):一本書(shū)、一輛汽車(chē)、一個(gè)人都可以是對(duì)象,一個(gè)數(shù)據(jù)庫(kù)、一張網(wǎng)頁(yè)、一個(gè)與遠(yuǎn)程服務(wù)器的連接也可以是對(duì)象。
當(dāng)實(shí)物被抽象成對(duì)象,實(shí)物之間的關(guān)系就變成了對(duì)象之間的關(guān)系,從而就可以模擬現(xiàn)實(shí)情況,針對(duì)對(duì)象進(jìn)行編程。
編程中對(duì)象是一個(gè)容器,封裝了屬性(property)和方法(method)。
屬性是對(duì)象的狀態(tài),方法是對(duì)象的行為(完成某種任務(wù))。
比如,我們可以把 "動(dòng)物" 進(jìn)行抽象,使用“屬性”記錄具體的特征,比如“大小”、“形態(tài)”、“毛色”;使用“方法”表示動(dòng)物的某種行為,比如 “奔跑”、“捕獵”、“跳躍。
舉個(gè)小例子:
特征 (屬性):滿(mǎn)身猴毛,尖嘴豎耳,黃發(fā)金箍;
行為 (方法):耍金箍棒,踏筋斗云,上凌霄殿;
是誰(shuí) ???我不說(shuō)。
你想到的不是孫悟空就是六耳獼猴,為什么你腦海里能出現(xiàn)一個(gè)畫(huà)面,是因?yàn)槲彝ㄟ^(guò)屬性和方法描述了一個(gè) “類(lèi)”,而你的腦海里便出現(xiàn)了通過(guò)類(lèi)具體生成的 “對(duì)象” 。
ECMAScript-262 把對(duì)象定義為:無(wú)序?qū)傩缘募希鋵傩钥梢园局?、?duì)象或者函數(shù)。
嚴(yán)格來(lái)講,這就相當(dāng)于說(shuō)對(duì)象是一組沒(méi)有特定順序的值。對(duì)象的每個(gè)屬性或方法都有一個(gè)名字,而每個(gè)名字都映射到一個(gè)值。也可以將其簡(jiǎn)單理解為:數(shù)據(jù)集或功能集。
面向?qū)ο缶幊逃腥筇匦裕悍庋b性、繼承性、多態(tài)性,這三大特性你先有個(gè)印象就行,這需要我們學(xué)習(xí)完具體的語(yǔ)法規(guī)則之后,有了一定的使用經(jīng)驗(yàn)才能再思考得出結(jié)論;
JavaScript 中的面向?qū)ο?/h3>
JavaScript 語(yǔ)言本身的設(shè)計(jì)缺陷,誤打誤撞,成了解釋最為徹底的“世界原本的樣子”的計(jì)算機(jī)編程語(yǔ)言。
——西嶺《凡人凡語(yǔ)》
Everything is object (萬(wàn)物皆對(duì)象),JS 語(yǔ)言中將一切都視為 對(duì)象 。
JavaScript 語(yǔ)言的對(duì)象體系,不基于“類(lèi)” 創(chuàng)建對(duì)象,是基于構(gòu)造函數(shù)(constructor)和原型鏈(prototype)。
























