|
【一】 面向?qū)ο蟮幕靖拍?/strong>
面向?qū)ο蟮挠⑽娜Q叫做Object Oriented,簡稱OO。OO其實(shí)包括OOA(Object Oriented Analysis,面向?qū)ο蠓治?、OOD(Object Oriented Design,面向?qū)ο笤O(shè)計(jì))和OOP(Object Oriented Programming,面向?qū)ο蟮某绦蛟O(shè)計(jì))。
通常所說的面向?qū)ο笫侵窸OP, OOP是一種圍繞真實(shí)世界的概念來組織模型的程序設(shè)計(jì)方法,它采用對象來描述問題空間的實(shí)體。在使用計(jì)算機(jī)解決問題時(shí),對象是作為計(jì)算機(jī)模擬真實(shí)世界的一個(gè)抽象,一個(gè)對象就是一個(gè)物理實(shí)體或邏輯實(shí)體,它反映了系統(tǒng)為之保存信息和(或)與它交互的能力。使其具有自己的屬性和行為, 從而簡化對復(fù)雜事物的描述,更有利于工程的可維護(hù)性和擴(kuò)展性。
OOP同結(jié)構(gòu)化程序設(shè)計(jì)相比最大的區(qū)別就在于: 前者首先關(guān)心的是所要處理的數(shù)據(jù),而后者首先關(guān)心的是功能。
【二】 面向?qū)ο笕齻€(gè)基本特征
封裝 (Encapsulation) 將數(shù)據(jù)以及相關(guān)的操作組織在一起,成為獨(dú)立的構(gòu)件。外部無法直接訪問這些封裝了的數(shù)據(jù),從而保證了這些數(shù)據(jù)的正確性。封裝的目的是為了內(nèi)部數(shù)據(jù)表現(xiàn)形式和實(shí)現(xiàn)細(xì)節(jié)的隱藏,信息隱藏是為了減少系統(tǒng)各部分間的依賴性,各部分間必須通過明確的通道傳送信息,也就是對象間的接口.這樣一來,隱藏了部分內(nèi)部的細(xì)節(jié),極大方便系統(tǒng)的開發(fā),維護(hù)和擴(kuò)展。
繼承 (Inheritance) 繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵(lì)類的重用,它提供了一種明確表述共性的方法。一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過程稱為類的繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且派生類可以修改或增加新的方法使之更適合特殊的需求。繼承性很好地解決了軟件的可重用性問題。
多態(tài) (Polymorphism) 多態(tài)是允許你將父對象設(shè)置成為和一個(gè)或更多的他的子對象相等的技術(shù),賦值之后,父對象就可以根據(jù)當(dāng)前賦值給它的子對象的特性以不同的方式運(yùn)作。簡單的說,就是允許類與類之間相同方法名的指針得以調(diào)用, 這樣很好地解決了應(yīng)用程序函數(shù)同名問題。實(shí)現(xiàn)多態(tài),有二種方式,覆蓋,重載。
【三】 Javascript 面向?qū)ο?/strong>
Javascript本身是一種基于對象(object-based)的語言,我們?nèi)粘>幋a過程中用到的所有東西幾乎都是對象(Number, String, Boolean, etc.)。但是,相對于一些流行的面向?qū)ο笳Z言(C++, C#, Java),它又不是一種真正的面向?qū)ο缶幊?OOP)語言,因?yàn)樗恼Z法中沒有class的概念。
Keyword: class, object, `this`, closure, constructor, prototype
幾種對象封裝的方法
- 繼承
- 多態(tài)體現(xiàn)
之一、幾種對象封裝的方法
1. 對象封裝 – 原始模式
假定我們把貓看成一個(gè)對象,它有”name”和”color”兩個(gè)屬性, “etc” 行為。
var Cat = { name: '' color: '', eat: function() {}};
it知識庫:前端開發(fā)之面向?qū)ο?/a>,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。