摘要:之前,本質(zhì)上不能算是一門面向?qū)ο蟮木幊陶Z言,因?yàn)樗鼘?duì)于封裝繼承多態(tài)這些面向?qū)ο笳Z言的特點(diǎn)并沒有在語言層面上提供原生的支持。所以在中出現(xiàn)了等關(guān)鍵字,解決了面向?qū)ο笾谐霈F(xiàn)了問題。
ES6之前,javascript本質(zhì)上不能算是一門面向?qū)ο蟮木幊陶Z言,因?yàn)樗鼘?duì)于封裝、繼承、多態(tài)這些面向?qū)ο笳Z言的特點(diǎn)并沒有在語言層面上提供原生的支持。
但是,它引入了原型(prototype)的概念,可以讓我們以另一種方式模仿類,并通過原型鏈的方式實(shí)現(xiàn)了父類子類之間共享屬性的繼承以及身份確認(rèn)機(jī)制。
其實(shí),面向?qū)ο蟮母拍畋举|(zhì)上來講不是指某種語言特性,而是一種設(shè)計(jì)思想。
正是由于javascript本身對(duì)面向?qū)ο缶幊虥]有一個(gè)語言上的支持標(biāo)準(zhǔn),所以才有了五花八門、令人眼花繚亂的“類繼承”的代碼。
所以在ES6中出現(xiàn)了class extends等關(guān)鍵字,解決了javascript面向?qū)ο笾谐霈F(xiàn)了問題。
之前花了大量篇幅來講述面向?qū)ο笾械姆庋b和繼承
談一談javascript面向?qū)ο?br> javascript面向?qū)ο笈c原型
javascript 面向?qū)ο笾黄恼赂愣╟all()方法")
javascript面向?qū)ο笾^承(上)")
javascript面向?qū)ο笾^承(下)")
javascript面向?qū)ο笾瓻S6中的類和繼承
今天我們研究一下javascript面向?qū)ο笾械亩鄳B(tài)
如果你在搜索引擎中搜索javascript多態(tài),有那么一個(gè)栗子你一定會(huì)搜到
非多態(tài)代碼示例
var makeSound = function( animal ){ if ( animal instanceof Duck ){ console.log( "嘎嘎嘎" ); }else if ( animal instanceof Chicken ){ console.log( "咯咯咯" ); } }; var Duck = function(){}; var Chicken = function(){}; makeSound( new Duck() ); // 嘎嘎嘎 makeSound( new Chicken() ); // 咯咯咯
多態(tài)的代碼示例
var makeSound = function(animal) { animal.sound(); } var Duck = function(){} Duck.prototype.sound = function() { console.log("嘎嘎嘎") } var Chicken = function() {}; Chicken.prototype.sound = function() { console.log("咯咯咯") } makeSound(new Chicken()); makeSound(new Duck());
這個(gè)栗子出自《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》,我手里沒有這本書,但是不耽誤我們?nèi)パ芯浚@個(gè)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100223.html
摘要:對(duì)象是公布其接口。節(jié)選自百度百科我對(duì)于封裝的理解,可能還有一個(gè)步驟就是抽離,首先你要清楚在一個(gè)對(duì)代碼中你應(yīng)該抽離那些屬性方法,有了這些為基礎(chǔ)才能更好的做好封裝。節(jié)選自百度百科因?yàn)槭菦]有重載的概念的所以要自己編寫邏輯完成重載。 1. 前言 2. 封裝 3. 繼承 4. 多態(tài) 5. 總結(jié) 1. 前言 了解過面向?qū)ο蟮耐瑢W(xué)應(yīng)該都知道,面向?qū)ο笕齻€(gè)基本特征是:封裝、繼承、多態(tài),但是對(duì)于這三...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:什么是面向?qū)ο蟊疚牟辉谡撌?。接下來說一下面向?qū)ο蟮娜筇卣髟诋?dāng)中的實(shí)現(xiàn)。封裝實(shí)現(xiàn)封裝實(shí)現(xiàn)就是是對(duì)象內(nèi)部的變化對(duì)外界是透明的不可見。這種做法使對(duì)象之間低耦合便于維護(hù)升級(jí)團(tuán)隊(duì)協(xié)作開發(fā)。。 概述 本來打算寫設(shè)計(jì)模式的,在談?wù)搄s的設(shè)計(jì)模式之前先說一下js的面向?qū)ο?因?yàn)楹芏嘣O(shè)計(jì)模式的實(shí)現(xiàn)都摻雜著面向?qū)ο蟮乃枷?所以先做一下前期鋪墊。 js我們都知道是一種動(dòng)態(tài)類型腳本型語言,變量類型無法保證,...
閱讀 3699·2021-08-10 09:42
閱讀 592·2019-08-30 15:55
閱讀 893·2019-08-30 15:54
閱讀 3116·2019-08-30 13:45
閱讀 557·2019-08-29 16:23
閱讀 1995·2019-08-29 16:23
閱讀 987·2019-08-29 15:18
閱讀 2266·2019-08-29 12:57