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