js基礎5-混合對象“類”

編程思想:

? ? 面向過程? 按照步驟解決問題,自頂向下 逐步細化

? ? ? ? ? ? ? ? ? ? 將函數(shù)封裝為一個功能模塊歇由,逐步執(zhí)行果港,來實現(xiàn)代碼的重用與模塊化編程

? ? 面向對象 模擬現(xiàn)實世界,抽象出實體谢谦,有哪些屬性和方法 通過實體來實現(xiàn)操作與業(yè)務邏輯

? ? ? ? ? ? ? ? ? ? OOP = 對象 + 類 + 繼承 + 多態(tài) + 消息

? ? ? ? ? ? ? ? ? ? 優(yōu)點:1 數(shù)據(jù)抽象 → 保持外部接口不變的情況下改變內部實現(xiàn)萝衩,減少對外部的干擾? ? 2 繼承 → 減少冗余代碼,方便擴展猩谊,降低維護成本? 3 封裝 → 隱藏了具體的實現(xiàn),如果實現(xiàn)的改變或升級對于使用方而言是無感知的墙牌,提高程序的可維護性暗甥;而且封裝鼓勵程序員把特定數(shù)據(jù)與對數(shù)據(jù)操作的功能打包在一起,有利于應用程序的去耦

? ? ? ? 需要注意的是這里類的行為意味著復制:實例化的過程是將類的行為復制到實例化對象中撤防,類的繼承也是將類的行為復制到子類中。

????????類理論:行為抽象到父類辜膝,子類進行特殊化(重寫)→ 多態(tài) 操作實例(擁有所有的行為)

JavaScript中的 混合對象“類”

1 混入 mixin(...) → 模仿類的復制行為

混入的簡單實現(xiàn)

問題 1)不是真正的復制,對象類型還是引用的復制合敦,實際上還是共享的狀態(tài)

? ? ? ? 2)顯式多態(tài) → 調用引用名稱標識符重疊的函數(shù) 帶this指向時 要使用call等方法調用固定this

2 通過 ?[[Prototype]] 模擬繼承行為

? ??????[[Prototype]]:JavaScript 中的對象有一個特殊的 [[Prototype]] 內置屬性验游,其實就是對于其他對象的引用。幾乎所有的對象在創(chuàng)建時 [[Prototype]] 屬性都會被賦予一個非空的值耕蝉。

? ? ? ? 原型鏈:如果在對象上沒有找到需要的屬性或者方法引用,引擎就 會繼續(xù)在 [[Prototype]] 關聯(lián)的對象上進行查找蒜魄。同理场躯,如果在后者中也沒有找到需要的 引用就會繼續(xù)查找它的 [[Prototype]],以此類推踢关。這一系列對象的鏈接被稱為“原型鏈”。

? ??????屬性設置與屏蔽規(guī)則

1)如果在 [[Prototype]] 鏈上層存在名為 foo 的普通數(shù)據(jù)訪問屬性并且沒 有被標記為只讀(writable:false)秕脓,那就會直接在 myObject 中添加一個名為 foo 的新 屬性儒搭,它是屏蔽屬性。

2)如果在 [[Prototype]] 鏈上層存在 foo搂鲫,但是它被標記為只讀(writable:false),那么 無法修改已有屬性或者在 myObject 上創(chuàng)建屏蔽屬性怔檩。如果運行在嚴格模式下蓄诽,代碼會 拋出一個錯誤媒吗。否則,這條賦值語句會被忽略〗橥啵總之出吹,不會發(fā)生屏蔽

?3)如果在 [[Prototype]] 鏈上層存在 foo 并且它是一個 setter(參見第 3 章),那就一定會 調用這個 setter捶牢。foo 不會被添加到(或者說屏蔽于)myObject,也不會重新定義 foo 這 個 setter渐排。

原型繼承:在二個對象間創(chuàng)建一個關聯(lián)灸蟆,這樣其中一個對象可以通過委托訪問另一個對象的屬性。實現(xiàn)方式:

1)對象關聯(lián):

2 )構造函數(shù)模擬類的實現(xiàn)

拓展:JavaScript原型相關的操作

1)內士筛俊(反射)找到一個對象的委托關聯(lián):

a instanceof Foo?:在 a 的整條 [[Prototype]] 鏈中是否有指向 Foo.prototype 的對象

Foo.prototype.isPrototypeOf( a ):在 a 的整 條 [[Prototype]] 鏈中是否出現(xiàn)過 Foo.prototype

Object.getPrototypeOf( a ) === Foo.prototype;

a.__proto__ === Foo.prototype;

2)__proto__ 的實現(xiàn)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末城看,一起剝皮案震驚了整個濱河市杏慰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轰胁,老刑警劉巖朝扼,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異擎颖,居然都是意外死亡,警方通過查閱死者的電腦和手機驮俗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門允跑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搪柑,“玉大人索烹,你說我怎么就攤上這事“傩眨” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵端圈,是天一觀的道長子库。 經常有香客問我,道長仑嗅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任鸵贬,我火速辦了婚禮脖捻,結果婚禮上,老公的妹妹穿的比我還像新娘嗜浮。我一直安慰自己,他們只是感情好危融,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布雷袋。 她就那樣靜靜地躺著,像睡著了一般蛋勺。 火紅的嫁衣襯著肌膚如雪鸠删。 梳的紋絲不亂的頭發(fā)上抱完,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天乾蛤,我揣著相機與錄音捅僵,去河邊找鬼。 笑死庙楚,一個胖子當著我的面吹牛,可吹牛的內容都是我干的馒闷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼逛薇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了永罚?” 一聲冷哼從身側響起卧秘,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翅敌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體治专,經...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡遭顶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年液肌,在試婚紗的時候發(fā)現(xiàn)自己被綠了挟炬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗦哆。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖老速,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情橘券,我是刑警寧澤卿吐,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布锋华,位于F島的核電站,受9級特大地震影響衍腥,放射性物質發(fā)生泄漏纳猫。R本人自食惡果不足惜婆咸,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一尚骄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乖仇,春花似錦询兴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜀铲。三九已至属百,卻和暖如春记劝,著一層夾襖步出監(jiān)牢的瞬間族扰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工怒竿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扩氢,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓录豺,卻偏偏與公主長得像饭弓,于是被迫代替她去往敵國和親媒抠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內容