摘要:之前,本質上不能算是一門面向對象的編程語言,因為它對于封裝繼承多態這些面向對象語言的特點并沒有在語言層面上提供原生的支持。所以在中出現了等關鍵字,解決了面向對象中出現了問題。
ES6之前,javascript本質上不能算是一門面向對象的編程語言,因為它對于封裝、繼承、多態這些面向對象語言的特點并沒有在語言層面上提供原生的支持。
但是,它引入了原型(prototype)的概念,可以讓我們以另一種方式模仿類,并通過原型鏈的方式實現了父類子類之間共享屬性的繼承以及身份確認機制。
其實,面向對象的概念本質上來講不是指某種語言特性,而是一種設計思想。
正是由于javascript本身對面向對象編程沒有一個語言上的支持標準,所以才有了五花八門、令人眼花繚亂的“類繼承”的代碼。
所以在ES6中出現了class extends等關鍵字,解決了javascript面向對象中出現了問題。
之前花了大量篇幅來講述面向對象中的封裝和繼承
談一談javascript面向對象
javascript面向對象與原型
javascript 面向對象之一篇文章搞定call()方法")
javascript面向對象之繼承(上)")
javascript面向對象之繼承(下)")
javascript面向對象之ES6中的類和繼承
今天我們研究一下javascript面向對象中的多態
如果你在搜索引擎中搜索javascript多態,有那么一個栗子你一定會搜到
非多態代碼示例
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() ); // 咯咯咯
多態的代碼示例
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());
這個栗子出自《JavaScript設計模式與開發實踐》,我手里沒有這本書,但是不耽誤我們去研究,這個
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100223.html
摘要:對象是公布其接口。節選自百度百科我對于封裝的理解,可能還有一個步驟就是抽離,首先你要清楚在一個對代碼中你應該抽離那些屬性方法,有了這些為基礎才能更好的做好封裝。節選自百度百科因為是沒有重載的概念的所以要自己編寫邏輯完成重載。 1. 前言 2. 封裝 3. 繼承 4. 多態 5. 總結 1. 前言 了解過面向對象的同學應該都知道,面向對象三個基本特征是:封裝、繼承、多態,但是對于這三...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:什么是面向對象本文不在論述。接下來說一下面向對象的三大特征在當中的實現。封裝實現封裝實現就是是對象內部的變化對外界是透明的不可見。這種做法使對象之間低耦合便于維護升級團隊協作開發。。 概述 本來打算寫設計模式的,在談論js的設計模式之前先說一下js的面向對象,因為很多設計模式的實現都摻雜著面向對象的思想,所以先做一下前期鋪墊。 js我們都知道是一種動態類型腳本型語言,變量類型無法保證,...
閱讀 3684·2021-08-10 09:42
閱讀 584·2019-08-30 15:55
閱讀 880·2019-08-30 15:54
閱讀 3104·2019-08-30 13:45
閱讀 549·2019-08-29 16:23
閱讀 1986·2019-08-29 16:23
閱讀 976·2019-08-29 15:18
閱讀 2255·2019-08-29 12:57