模擬JavaScript中面向?qū)ο蠹夹g程序分享

 今天小編給大家分享的是模擬JavaScript中面向?qū)ο蠹夹g程序的詳細介紹,相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,話不多說,一起往下看吧。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設、做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務馬邊彝族,10年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

 在C#和Java語言中,面向?qū)ο笫且灶惖姆绞綄崿F(xiàn)的,特別是繼承這個特性,類的方式繼承表現(xiàn)出了強大的功能,而且也易于學習。JavaScript不是純的面向?qū)ο蟮恼Z言,而是基于對象的語言,對象的繼承是以原型函數(shù)的形式繼承的,很多初學者剛開始接觸的時候不太理解,但是JavaScript這種以原型函數(shù)的形式實現(xiàn)面向?qū)ο蠹夹g,不僅是可行的,而且還為面向?qū)ο蠹夹g提供了動態(tài)繼承的功能,本文主要討論了JavaScript的面向?qū)ο蠹夹g。 
一、原型對象概述 
每個JavaScript對象都有原型對象,對象都繼承原型對象的所有屬性。一個對象的原型是由創(chuàng)建該對象的構造函數(shù)定義的。JavaScript的所有函數(shù)都有一個名為prototype的屬性,該屬性引用了原型對象,該原型對象初始化的時候只有constructor屬性來引用創(chuàng)建該原型對象的對象。JavaScript沒有Class定義類的概念,構造函數(shù)就定義了類,并初始化類中的屬性,每個類的成員都會從原型對象中繼承相同的屬性,也就是說,原型對象提供了類的實例共享的屬性和方法,這就節(jié)約了內(nèi)存。 
當讀取一個對象的屬性的時候,JavaScript會先從對象中查找,如果沒有查找到,才會到原型對象中查找該屬性(或方法),所以,尤其是對于方法,最好保存到原型對象中以便于共享,并且達到節(jié)省內(nèi)存的目的,而且原型對象還有一個強大的功能,那就是如果通過構造函數(shù)實例化一些對象后,再給構造函數(shù)的原型對象增加屬性和方法,那么它原來實例化的對象實例將會繼承這些增加的屬性和方法。 
二、對象屬性、對象方法、類屬性、類方法 
每個對象都會有自己單獨的實例屬性和實例方法的副本,如果實例化5個對象,那么就會有5個對象的實例屬性和實例方法副本。This關鍵字引用它們的實例對象,也就是說,誰操作了實例方法,this就引用誰;訪問了哪個實例對象的屬性,this就引用這個實例對象。 
類方法和類屬性只有一個副本,類方法調(diào)用的時候必須引用類的名字,例如:Date.setHours(); 
下面用一個程序來表現(xiàn)實例屬性、實例方法、類屬性、類方法 

function Mobile(kind,brand) { 
    this.kind=kind;//定義手機的種類,例如GSM/CDMA 
    this.brand=brand;//定義手機的品牌,this關鍵字表示用該構造函數(shù)實例化之后的對象 

 
/// 
 定義類的第二步是在構造函數(shù)的原型對象中定義它的實例方法或其他屬性 
 該對象定義的任何屬性都將這個類的所有實例繼承。 
  
 

 //撥號,這里只是返回電話號碼 
Mobile.prototype.dial = function(phoneNo) { 
    return phoneNo; 
}; 
 
 
/
// 
 定義類的第三步是定義類方法,常量和其他必要的類屬性,作為構造函數(shù)自身的屬性,而不是構造函數(shù) 
 原型對象的屬性,注意,類方法沒有使用關鍵字this,因為他們只對他們的實際參數(shù)進行操作。 
 

//開機關機方法 
Mobile.turnOn=function() { 
   return "The power of mobile is on"; 

Mobile.turnOff=function() { 
   return "The power of mobile is off"; 


//類屬性,這樣他們就可以被用作常量,注意實際上他們并不是只讀的 
Mobile.screenColor=64K;//假設該類手機的屏幕顏色都是64K彩屏的 
三、子類化 
   JavaScript支持子類化,只需把子類的原型對象用超類實例化即可,但是應該注意,這樣子類化之后就會存在一個問題,由于是用超類實例化子類的原型對象取得的,所以就沖掉了自己本身的由JavaScript提供的constructor屬性,為了確保constructor的正確性,需要重新指定一下,子類化的程序例子如下: 
   /  子類化  
//下面是子類構造函數(shù)智能型手機 
function SmartPhone(os) 

  this.os=os; 


//我們將Mobile對象作為它的原型 
//這意味著新類的實例將繼承SmartPhone.prototype, 
//后者由Mobile.prototype繼承而來 
//Mobile.prototype又由Object.prototype繼承而來 
SmartPhone.prototype=new Mobile(GSM,Nokia); 
//下面給子類添加一個新方法,發(fā)送電子郵件,這里只是返回Email地址 
SmartPhone.prototype.sendEmail=function(emailAddress) { 
  return this.emailAddress 

//上面的子類化方法有一點缺陷,由于我們明確把SmartPhone.prototype設成了我們所創(chuàng)建的一個對象,所以就覆蓋了JS提供 
//的原型對象,而且丟棄了給定的Constructor屬性。該屬性引用的是創(chuàng)建這個對象的構造函數(shù)。但是SmartPhone對象集成了它的 
//父類的constructor,它自己沒有這個屬性,明確設置著一個屬性可以解決這個問題: 
SmartPhone.prototype.constructor=SmartPhone; 
var objSmartPhone=new SmartPhone();//實例化子類

看完上述內(nèi)容,你們對模擬JavaScript中面向?qū)ο蠹夹g程序大概了解了嗎?如果想了解更多相關文章內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站題目:模擬JavaScript中面向?qū)ο蠹夹g程序分享
標題網(wǎng)址:http://bm7419.com/article42/gijhhc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、品牌網(wǎng)站設計響應式網(wǎng)站、定制網(wǎng)站網(wǎng)站制作、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化