国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript多態與封裝實例分析

2024-05-06 15:32:26
字體:
來源:轉載
供稿:網友

本文實例講述了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兩種封裝性。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 红安县| 上杭县| 昆明市| 常宁市| 日土县| 洪泽县| 武宁县| 郎溪县| 美姑县| 贵南县| 嘉义县| 德江县| 柏乡县| 桃园市| 民勤县| 阳山县| 丰台区| 沙坪坝区| 虎林市| 武功县| 固阳县| 柳河县| 洛宁县| 张家界市| 郑州市| 红河县| 工布江达县| 神农架林区| 华亭县| 荆州市| 镇巴县| 瑞金市| 深泽县| 聂拉木县| 黑龙江省| 枣强县| 巍山| 含山县| 衡阳县| 海安县| 新乐市|