Coding 第一奧義:面向對象編程
本文轉載自微信公眾號「勾勾的前端世界」,作者西嶺 。轉載本文請聯系勾勾的前端世界公眾號。
到底什么是面向對象編程
面向對象是軟件程序設計開發的一種方法,一種編程范式,其本質是以建立模型體現出來的抽象思維過程和面向對象的方法。
模型是用來反映現實世界中事物特征的,是對事物特征和變化規律的一種抽象,通過建立模型而達到的抽象是人們對客體認識的深化。
什么是對象?
對象是對概念的具體化體現:一本書、一輛汽車、一個人都可以是對象,一個數據庫、一張網頁、一個與遠程服務器的連接也可以是對象。
當實物被抽象成對象,實物之間的關系就變成了對象之間的關系,從而就可以模擬現實情況,針對對象進行編程。
編程中對象是一個容器,封裝了屬性(property)和方法(method)。
屬性是對象的狀態,方法是對象的行為(完成某種任務)。
比如,我們可以把 "動物" 進行抽象,使用“屬性”記錄具體的特征,比如“大小”、“形態”、“毛色”;使用“方法”表示動物的某種行為,比如 “奔跑”、“捕獵”、“跳躍。
舉個小例子:
特征 (屬性):滿身猴毛,尖嘴豎耳,黃發金箍;
行為 (方法):耍金箍棒,踏筋斗云,上凌霄殿;
是誰 ???我不說。
你想到的不是孫悟空就是六耳獼猴,為什么你腦海里能出現一個畫面,是因為我通過屬性和方法描述了一個 “類”,而你的腦海里便出現了通過類具體生成的 “對象” 。
ECMAScript-262 把對象定義為:無序屬性的集合,其屬性可以包含基本值、對象或者函數。
嚴格來講,這就相當于說對象是一組沒有特定順序的值。對象的每個屬性或方法都有一個名字,而每個名字都映射到一個值。也可以將其簡單理解為:數據集或功能集。
面向對象編程有三大特性:封裝性、繼承性、多態性,這三大特性你先有個印象就行,這需要我們學習完具體的語法規則之后,有了一定的使用經驗才能再思考得出結論;
JavaScript 中的面向對象
JavaScript 語言本身的設計缺陷,誤打誤撞,成了解釋最為徹底的“世界原本的樣子”的計算機編程語言。
——西嶺《凡人凡語》
Everything is object (萬物皆對象),JS 語言中將一切都視為 對象 。
JavaScript 語言的對象體系,不基于“類” 創建對象,是基于構造函數(constructor)和原型鏈(prototype)。