學(xué)習(xí)面向?qū)ο笾嫦驅(qū)ο蟮幕靖拍?對(duì)象和其他基本要素
什么是對(duì)象
對(duì)象是一件事,一個(gè)實(shí)體,一個(gè)名詞,概括來(lái)說(shuō):萬(wàn)物皆是對(duì)象
一個(gè)對(duì)象保存了某些信息,并知道如何執(zhí)行某些操作
對(duì)象的狀態(tài)和行為
對(duì)象具有狀態(tài),狀態(tài)是對(duì)對(duì)象的一個(gè)或多個(gè)屬性的描述(如:一個(gè)燈 "燈是亮的 這是它的狀態(tài)")
對(duì)象具有行為,行為是對(duì)象為為改變自身的狀態(tài)而發(fā)生的作用和反作用(如:一個(gè)燈 "把燈關(guān)了" 這是它的行為)
面像對(duì)象中最原始的單元就是對(duì)象
封裝
把數(shù)據(jù)和影響這個(gè)數(shù)據(jù)的操作聚合成一個(gè)對(duì)象的行為稱(chēng)為“封裝”
封裝隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),公對(duì)公開(kāi)接口,控制程序中屬性的讀和修改的訪問(wèn)級(jí)別
從外視圖看,在一個(gè)對(duì)象內(nèi)封裝的數(shù)據(jù)是隱藏的
封裝的目的增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只要通過(guò)對(duì)象對(duì)外開(kāi)發(fā)的接口,一特定的訪問(wèn)權(quán)限來(lái)使用對(duì)象的成員
消息和方法
消息發(fā)送
一個(gè)對(duì)象通過(guò)發(fā)送“消息”訪問(wèn)另一個(gè)對(duì)象,這樣的訪問(wèn),稱(chēng)為“消息發(fā)送”,是一個(gè)對(duì)象訪問(wèn)另一個(gè)對(duì)象的唯一的方法
消息發(fā)送過(guò)程中包含了:發(fā)送器->消息【名稱(chēng)和參數(shù)】->接收器
消息
一個(gè)“消息”由一個(gè)操作的名稱(chēng)和所有必須的參數(shù)組成,當(dāng)一個(gè)對(duì)象給另一個(gè)對(duì)象發(fā)送消息時(shí),發(fā)送者請(qǐng)求消息接受者執(zhí)行指定的操作,并(有可能)返回信息,當(dāng)接受者接收消息時(shí),它以它所知道的方式來(lái)執(zhí)行被請(qǐng)求的操作。這樣的請(qǐng)求不規(guī)定如何執(zhí)行一個(gè)操作。對(duì)于發(fā)送者的這種信息總是被隱藏的
消息名稱(chēng)
一個(gè)消息包括操作名稱(chēng)和該操作所要求的全部參數(shù),有時(shí),通過(guò)名稱(chēng)來(lái)查閱操作是很有用的,而不考慮它的參數(shù),我們把一個(gè)操作的名稱(chēng)稱(chēng)為“消息名稱(chēng)”。
方法
當(dāng)一個(gè)對(duì)象接收一個(gè)消息時(shí),它通過(guò)執(zhí)行一種方法來(lái)完成被請(qǐng)求的操作。這種“方法”就是一步一步執(zhí)行算法。當(dāng)消息名稱(chēng)和操作名稱(chēng)匹配時(shí),響應(yīng)接收到的消息。正如由信息隱藏原理所規(guī)定的。方法始終是一個(gè)對(duì)象私有表達(dá)的一部分,而不是公式接口的一部分。
簽名
與消息發(fā)送相關(guān)的一個(gè)更有用的概念是簽名,當(dāng)一個(gè)消息由一種方法和方法所需的參數(shù)組成時(shí),“簽名”就是這種方法的名稱(chēng),參數(shù)類(lèi)型和返回對(duì)象的類(lèi)型,簽名是方法輸入的正規(guī)說(shuō)明書(shū),也是方法輸出的正規(guī)說(shuō)明書(shū)。它規(guī)定了使用這種方法所必需的東西
相關(guān)文章
JavaScript對(duì)象鏈?zhǔn)讲僮鞔a(jquery)
自從使用了jQuery以后,對(duì)它的鏈?zhǔn)讲僮骱苁且蕾?lài),以至于常常覺(jué)得其他庫(kù)不好用。。2010-07-07Javascript面向?qū)ο缶幊蹋ㄈ?非構(gòu)造函數(shù)的繼承
這個(gè)系列的第一部分介紹了"封裝",第二部分介紹了使用構(gòu)造函數(shù)實(shí)現(xiàn)"繼承"。2011-08-08JavaScript面向?qū)ο?極簡(jiǎn)主義法minimalist approach)
荷蘭程序員 Gabor de Mooij 提出了一種比 Object.create ()更好的新方法,他稱(chēng)這種方法為極簡(jiǎn)主義法(minimalist approach)。這也是我推薦的方法2012-07-07用JavaScript實(shí)現(xiàn)單繼承和多繼承的簡(jiǎn)單方法
JavaScript是一種強(qiáng)大的多泛型編程語(yǔ)言,其融合了面向過(guò)程、面向?qū)ο蠛秃瘮?shù)式編程于一身,具備強(qiáng)大的表現(xiàn)能力。2009-03-03javascript 面向?qū)ο缶幊?function也是類(lèi)
function在javascript中用來(lái)創(chuàng)建函數(shù)或方法,但要想實(shí)現(xiàn)面向?qū)ο蠓绞降木幊?,?lèi)是不可或缺的角色之一,而且是主角。2009-09-09JavaScript 對(duì)象鏈?zhǔn)讲僮鳒y(cè)試代碼
自從使用了jQuery以后,對(duì)它的鏈?zhǔn)讲僮骱苁且蕾?lài),以至于常常覺(jué)得其他庫(kù)不好用。。2010-04-04js對(duì)象的構(gòu)造和繼承實(shí)現(xiàn)代碼
js對(duì)象的構(gòu)造和繼承實(shí)現(xiàn)代碼,學(xué)習(xí)javascript面向?qū)ο蟮呐笥芽梢詤⒖枷?。?xiě)出跟漂亮與復(fù)用的代碼。2010-12-12JavaScript isPrototypeOf和hasOwnProperty使用區(qū)別
JavaScript isPrototypeOf和hasOwnProperty的使用技巧,需要的朋友的朋友可以參考下。2010-03-03JavaScript面向?qū)ο笤O(shè)計(jì)二 構(gòu)造函數(shù)模式
在Javascript面向?qū)ο笤O(shè)計(jì)一——工廠模式 中介紹了使用CreateEmployee()函數(shù)創(chuàng)建員工類(lèi)。ECMAScript中的構(gòu)造函數(shù)可以用來(lái)創(chuàng)建特定類(lèi)型的對(duì)象,如Object和Array這樣的原生構(gòu)造函數(shù),在運(yùn)行時(shí)會(huì)自動(dòng)出現(xiàn)在執(zhí)行環(huán)境中,此外也可以創(chuàng)建自定義的構(gòu)造函數(shù),從而創(chuàng)建自定義對(duì)象類(lèi)型的屬性和方法2011-12-12