成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談JavaScript中面向對象技術的模擬

開發 后端 前端
JavaScript不是純的面向對象的語言,而是基于對象的語言,對象的繼承是以原型函數的形式繼承的,很多初學者剛開始接觸的時候不太理解,但是JavaScript這種以原型函數的形式實現面向對象技術,不僅是可行的,而且還為面向對象技術提供了動態繼承的功能,本文主要討論了JavaScript的面向對象技術。

在C#和Java語言中,面向對象是以類的方式實現的,特別是繼承這個特性,類的方式繼承表現出了強大的功能,而且也易于學習。JavaScript不是純的面向對象的語言,而是基于對象的語言,對象的繼承是以原型函數的形式繼承的,很多初學者剛開始接觸的時候不太理解,但是JavaScript這種以原型函數的形式實現面向對象技術,不僅是可行的,而且還為面向對象技術提供了動態繼承的功能,本文主要討論了JavaScript的面向對象技術。

原型對象概述

每個JavaScript對象都有原型對象,對象都繼承原型對象的所有屬性。一個對象的原型是由創建該對象的構造函數定義的。JavaScript的所有函數都有一個名為prototype的屬性,該屬性引用了原型對象,該原型對象初始化的時候只有constructor屬性來引用創建該原型對象的對象。JavaScript沒有Class定義類的概念,構造函數就定義了類,并初始化類中的屬性,每個類的成員都會從原型對象中繼承相同的屬性,也就是說,原型對象提供了類的實例共享的屬性和方法,這就節約了內存。

當讀取一個對象的屬性的時候,JavaScript會先從對象中查找,如果沒有查找到,才會到原型對象中查找該屬性(或方法),所以,尤其是對于方法,***保存到原型對象中以便于共享,并且達到節省內存的目的,而且原型對象還有一個強大的功能,那就是如果通過構造函數實例化一些對象后,再給構造函數的原型對象增加屬性和方法,那么它原來實例化的對象實例將會繼承這些增加的屬性和方法。

對象屬性、對象方法、類屬性、類方法

每個對象都會有自己單獨的實例屬性和實例方法的副本,如果實例化5個對象,那么就會有5個對象的實例屬性和實例方法副本。This關鍵字引用它們的實例對象,也就是說,誰操作了實例方法,this就引用誰;訪問了哪個實例對象的屬性,this就引用這個實例對象。

類方法和類屬性只有一個副本,類方法調用的時候必須引用類的名字,例如:Date.setHours();

下面用一個程序來表現實例屬性、實例方法、類屬性、類方法

  1. function Mobile(kind,brand) {  
  2.  
  3.     this.kind=kind;//定義手機的種類,例如GSM/CDMA  
  4.  
  5.     this.brand=brand;//定義手機的品牌,this關鍵字表示用該構造函數實例化之后的對象  
  6.  
  7. }  
  8.  
  9.  
  10. /**//*  
  11.  
  12. 定義類的第二步是在構造函數的原型對象中定義它的實例方法或其他屬性  
  13.  
  14. 該對象定義的任何屬性都將這個類的所有實例繼承。  
  15.  
  16.  
  17. */ 
  18.  
  19. //撥號,這里只是返回電話號碼  
  20.  
  21. Mobile.prototype.dial = function(phoneNo) {  
  22.  
  23.     return phoneNo;  
  24.  
  25. };  
  26.  
  27.  
  28.  
  29. /**//*  
  30.  

定義類的第三步是定義類方法,常量和其他必要的類屬性,作為構造函數自身的屬性,而不是構造函數

原型對象的屬性,注意,類方法沒有使用關鍵字this,因為他們只對他們的實際參數進行操作。

  1. */  
  2.  
  3. //開機關機方法  
  4.  
  5. Mobile.turnOn=function() {  
  6.  
  7.    return "The power of mobile is on";  
  8.  
  9. }  
  10.  
  11. Mobile.turnOff=function() {  
  12.  
  13.    return "The power of mobile is off";  
  14.  
  15. }  
  16.  
  17.  
  18.  
  19. //類屬性,這樣他們就可以被用作常量,注意實際上他們并不是只讀的  
  20.  
  21. Mobile.screenColor=64K;//假設該類手機的屏幕顏色都是64K彩屏的  
  22.  

子類化

JavaScript支持子類化,只需把子類的原型對象用超類實例化即可,但是應該注意,這樣子類化之后就會存在一個問題,由于是用超類實例化子類的原型對象取得的,所以就沖掉了自己本身的由JavaScript提供的constructor屬性,為了確保constructor的正確性,需要重新指定一下,子類化的程序例子如下:

  1.  /*****  子類化  *****/ 
  2.  
  3. //下面是子類構造函數智能型手機  
  4.  
  5. function SmartPhone(os)  
  6.  
  7. {  
  8.  
  9.   this.os=os;  
  10.  
  11.    
  12.  
  13. }  
  14.  
  15. //我們將Mobile對象作為它的原型  
  16.  
  17. //這意味著新類的實例將繼承SmartPhone.prototype,  
  18.  
  19. //后者由Mobile.prototype繼承而來  
  20.  
  21. //Mobile.prototype又由Object.prototype繼承而來  
  22.  
  23. SmartPhone.prototype=new Mobile(GSM,Nokia);  
  24.  
  25. //下面給子類添加一個新方法,發送電子郵件,這里只是返回Email地址  
  26.  
  27. SmartPhone.prototype.sendEmail=function(emailAddress) {  
  28.  
  29.   return this.emailAddress  
  30.  
  31. }  
  32.  
  33. //上面的子類化方法有一點缺陷,由于我們明確把SmartPhone.prototype設成了我們所創建的一個對象,所以就覆蓋了JS提供  
  34.  
  35. //的原型對象,而且丟棄了給定的Constructor屬性。該屬性引用的是創建這個對象的構造函數。但是SmartPhone對象集成了它的  
  36.  
  37. //父類的constructor,它自己沒有這個屬性,明確設置著一個屬性可以解決這個問題:  
  38.  
  39. SmartPhone.prototype.constructor=SmartPhone;  
  40.  
  41. var objSmartPhone=new SmartPhone();//實例化子類   
  42.  

【編輯推薦】

  1. 如何優化JavaScript腳本的性能
  2. Javascript中最常用的25個經典技巧
  3. 不唐突的JavaScript的七條準則
  4. JavaScript中的Object到底是什么
  5. 痛陳Javascript的缺點
責任編輯:王觀 來源: 動態網站制作指南
相關推薦

2021-10-21 18:47:37

JavaScript面向對象

2018-12-14 11:30:00

JavaScript編程前端

2011-05-13 09:58:46

javascript

2011-05-13 10:51:25

javascript

2011-05-13 11:17:18

javascript

2011-05-13 11:27:59

javascript

2011-05-13 12:38:58

javascript

2011-05-13 11:05:52

javascript

2012-01-17 09:34:52

JavaScript

2017-04-21 09:07:39

JavaScript對象編程

2012-03-14 10:48:05

C#

2009-06-29 10:50:18

VB.NET面向對象能力

2012-02-27 09:30:22

JavaScript

2018-12-19 19:30:46

JavaScript創建對象前端

2009-06-15 14:59:31

Java代碼Java

2012-12-25 10:51:39

IBMdW

2017-08-28 15:21:29

異步處理回調函數異步編程

2009-03-11 15:30:05

evalwithJavascript

2010-06-13 10:01:48

面向對象技術與UML

2011-05-25 10:59:26

Javascript繼承
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99视频这里只有精品 | 日韩图区| 亚洲精品二区 | 最新中文字幕在线 | 亭亭五月激情 | 夜夜艹 | 亚洲综合二区 | 欧美在线a| 免费能直接在线观看黄的视频 | 天天摸天天看 | 爱爱无遮挡 | 91精品一区二区三区久久久久 | 国产精品视频在线播放 | 亚洲精品在线国产 | 婷婷色国产偷v国产偷v小说 | 中国av在线免费观看 | 国产黄色在线观看 | 欧美激情精品久久久久 | 日本三级电影免费观看 | 国产黄色大片在线观看 | 国产区一区 | www日本高清 | 少妇一区在线观看 | 国产成人精品一区二区 | 日韩精品av一区二区三区 | 国产欧美在线 | 午夜黄色影院 | 天天干天天爱天天 | 国产亚洲精品综合一区 | 欧美 日韩 国产 成人 在线 91 | 成年女人免费v片 | 成人在线小视频 | 精品一区二区三区四区 | 四色永久 | 欧美一区视频 | 免费一级淫片aaa片毛片a级 | 国产精品一区久久久 | 在线观看成人小视频 | 免费视频中文字幕 | 91精品国产高清久久久久久久久 | 久久久久综合 |