<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript多態與封裝實例分析

        來源:懂視網 責編:小采 時間:2020-11-27 22:10:57
        文檔

        JavaScript多態與封裝實例分析

        JavaScript多態與封裝實例分析:本文實例講述了JavaScript多態與封裝。分享給大家供大家參考,具體如下: 1、靜態語言類型和動態語言類型 編程語言按照數據類型可以分為靜態語言類型和動態語言類型兩大類。 1) 靜態語言類型在編譯時就已經確定變量的類型 優點:在編譯時就能發現類型不匹配的
        推薦度:
        導讀JavaScript多態與封裝實例分析:本文實例講述了JavaScript多態與封裝。分享給大家供大家參考,具體如下: 1、靜態語言類型和動態語言類型 編程語言按照數據類型可以分為靜態語言類型和動態語言類型兩大類。 1) 靜態語言類型在編譯時就已經確定變量的類型 優點:在編譯時就能發現類型不匹配的

        本文實例講述了JavaScript多態與封裝。分享給大家供大家參考,具體如下:

        1、靜態語言類型和動態語言類型

        編程語言按照數據類型可以分為靜態語言類型和動態語言類型兩大類。

        1) 靜態語言類型在編譯時就已經確定變量的類型

        優點:在編譯時就能發現類型不匹配的錯誤,編譯器可以幫助我們提前避免程序在運行期間可能發生的一些錯誤;在程序中明確規定了數據類型,編譯器可以針對這些信息對程序進行優化工作。

        缺點:迫使程序員依照契約來編寫程序,為每個變量規定數據類型;類型的聲明也會增加更多的代碼,使得程序員難以專注于業務邏輯。

        2) 動態類型語言的變量類型需要到程序運行的時候變量被賦值時才能確定。

        優點:編寫的代碼數量少,簡潔使得程序員可以更專注于業務邏輯。

        缺點:無法保證變量的類型,在程序運行期間可能發生與類型有關的錯誤。

        2、JavaScript多態

        多態的思想實際上是:將"做什么"與"誰去做以及怎樣去做"分離開,也就是將"不變的事物"與"可能改變的事物"分離開,把不變的事物隔離出來,把可變的部分封裝起來。要實現這一點,歸根結底就是要消除類型之間的耦合關系。

        多態的最根本的作用是:通過把程序化的條件分支語句轉化為對象的多態性,從而消除這些條件分支語句。

        var student = {
         show: function() {
         console.log('我是學生');
         }
        };
        var teacher = {
         show: function() {
         console.log('我是老師');
         }
        };
        var showMe = function(type) {
         if (type == 'teacher')
         teacher.show();
         else if (type == 'student')
         teacher.show();
        };
        showMe('teacher');
        showMe('student');
        
        

        問題:一旦需要增加新的type對應的show()方法,必須改動showMe()函數。

        解決:把程序中相同的部分抽離出來。

        var student = {
         show: function() {
         console.log('我是學生');
         }
        };
        var teacher = {
         show: function() {
         console.log('我是老師');
         }
        };
        var showMe = function(obj) {
         if (obj.show instanceof Function)
         obj.show();
        };
        showMe('teacher');
        showMe('student');
        
        

        若需要增加doctor類型對象,只需增加:

        var doctor = {
         show: function() {
         console.log('我是醫生');
         }
        };
        showMe(doctor);
        
        

        設計模式與多態:

        絕大部分設計模式的實現都離不開多態性的思想。

        3、封裝

        封裝的目的是將信息隱藏。一般封裝指的是封裝數據和封裝實現,但廣義的封裝還包括封裝類型和封裝變化。

        1) 封裝數據

        JavaScript沒有提供private、public、protected等關鍵字來實現不同的訪問權限,只能依賴變量的作用域來實現封裝特性,而且只能模擬出private、public兩種封裝性。

        除了ES6中提供的let以外,一般通過函數來創建作用域。

        var obj = (function() {
         var name = "Alice"; // 模擬private變量
         return {
         getName: function() { // 模擬public方法
         return name;
         }
         }
        })();
        console.log(obj.name); // 
        輸出:undefined console.log(obj.getName()); // 輸出:Alice

        2) 封裝實現

        從封裝實現細節來講,封裝使得對象內部的變化對其他對象而言是透明的,也就是不可見的,對象對自己的行為負責,其他對象或用戶不關心其內部實現。封裝使得對象之間的耦合變松散,對象之間只通過暴露的API接口來通信。修改一個對象時,可以隨意修改它的內部實現,只要對外的接口沒有變化,就不會影響程序的其他功能。

        例如,迭代器的作用是在不暴露一個聚合對象的內部表示的前提下,提供一種方式來順序訪問這個聚合對象,若有一個each函數,則使用它的人不必關心其內部實現,只有它可以提供正確的功能即可,即使each函數修改了源代碼,只要對外的接口或調用方式沒有變化,用戶就不必關心其內部實現的改變。

        3) 封裝類型

        封裝類型是靜態類型語言的一種重要封裝方式。一般而言,封裝類型是通過抽象類和接口來進行的,將對象的類型隱藏到抽象類或接口之后,相比對象的類型,用戶更關心對象的行為。在許多靜態類型語言的設計模式中,會想方設法地隱藏對象的類型,促使工廠模式、組合模式等設計模式誕生。

        在JavaScript中,并沒有對抽象類和接口的支持,在封裝類型方面,JavaScript沒有能力。

        4) 封裝變化

        從設計模式的角度出發,封裝更重要的層面體現為封裝變化。

        通過封裝變化的方式,把系統中穩定不變的部分和容易變化的部分隔離開,在系統演變過程中,只需要替換那些容易變化的部分,若這些部分是封裝好的,替換起來就會相對容易。

        更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

        希望本文所述對大家JavaScript程序設計有所幫助。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript多態與封裝實例分析

        JavaScript多態與封裝實例分析:本文實例講述了JavaScript多態與封裝。分享給大家供大家參考,具體如下: 1、靜態語言類型和動態語言類型 編程語言按照數據類型可以分為靜態語言類型和動態語言類型兩大類。 1) 靜態語言類型在編譯時就已經確定變量的類型 優點:在編譯時就能發現類型不匹配的
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 毛片基地免费观看| 人妻在线日韩免费视频| 97人妻无码一区二区精品免费| 亚洲AV成人一区二区三区AV| 99热在线日韩精品免费| 亚洲AV午夜成人片| 1000部啪啪未满十八勿入免费| 亚洲福利电影在线观看| 成人无遮挡裸免费视频在线观看| 中文字幕亚洲男人的天堂网络| 免费一本色道久久一区| 欧美亚洲精品一区二区| 亚洲精品偷拍视频免费观看 | 亚洲免费视频在线观看| 84pao国产成视频免费播放| 亚洲国产综合第一精品小说| 无码国产精品久久一区免费| 边摸边吃奶边做爽免费视频99 | 久久亚洲国产午夜精品理论片| 日韩在线永久免费播放| 亚洲人成伊人成综合网久久| 青青青国产免费一夜七次郎| 羞羞视频网站免费入口| 亚洲啪啪AV无码片| 四虎最新永久免费视频| 色吊丝免费观看网站| 亚洲国产综合精品中文第一区| 67194成是人免费无码| 人人爽人人爽人人片A免费| 亚洲AV无码专区亚洲AV伊甸园| 日韩av无码成人无码免费| 曰批免费视频播放在线看片二| 五月天网站亚洲小说| 永久中文字幕免费视频网站| 国产午夜精品理论片免费观看| 久久亚洲AV无码精品色午夜| 国产精品免费_区二区三区观看| 久久性生大片免费观看性| 亚洲欧洲另类春色校园网站| 亚洲天堂免费在线视频| 国产成人精品免费视频动漫|