成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

JavaScript中面向?qū)ο蠹夹g(shù)的模擬方法

這篇文章主要介紹“JavaScript中面向?qū)ο蠹夹g(shù)的模擬方法”,在日常操作中,相信很多人在JavaScript中面向?qū)ο蠹夹g(shù)的模擬方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”JavaScript中面向?qū)ο蠹夹g(shù)的模擬方法”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

成都服務(wù)器托管,創(chuàng)新互聯(lián)提供包括服務(wù)器租用、多線BGP機(jī)房、帶寬租用、云主機(jī)、機(jī)柜租用、主機(jī)租用托管、CDN網(wǎng)站加速、空間域名等業(yè)務(wù)的一體化完整服務(wù)。電話咨詢:028-86922220

在C#和Java語言中,面向?qū)ο笫且灶惖姆绞綄?shí)現(xiàn)的,特別是繼承這個(gè)特性,類的方式繼承表現(xiàn)出了強(qiáng)大的功能,而且也易于學(xué)習(xí)。JavaScript不是純的面向?qū)ο蟮恼Z言,而是基于對(duì)象的語言,對(duì)象的繼承是以原型函數(shù)的形式繼承的,很多初學(xué)者剛開始接觸的時(shí)候不太理解,但是JavaScript這種以原型函數(shù)的形式實(shí)現(xiàn)面向?qū)ο蠹夹g(shù),不僅是可行的,而且還為面向?qū)ο蠹夹g(shù)提供了動(dòng)態(tài)繼承的功能,本文主要討論了JavaScript的面向?qū)ο蠹夹g(shù)。

原型對(duì)象概述

每個(gè)JavaScript對(duì)象都有原型對(duì)象,對(duì)象都繼承原型對(duì)象的所有屬性。一個(gè)對(duì)象的原型是由創(chuàng)建該對(duì)象的構(gòu)造函數(shù)定義的。JavaScript的所有函數(shù)都有一個(gè)名為prototype的屬性,該屬性引用了原型對(duì)象,該原型對(duì)象初始化的時(shí)候只有constructor屬性來引用創(chuàng)建該原型對(duì)象的對(duì)象。JavaScript沒有Class定義類的概念,構(gòu)造函數(shù)就定義了類,并初始化類中的屬性,每個(gè)類的成員都會(huì)從原型對(duì)象中繼承相同的屬性,也就是說,原型對(duì)象提供了類的實(shí)例共享的屬性和方法,這就節(jié)約了內(nèi)存。

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

對(duì)象屬性、對(duì)象方法、類屬性、類方法

每個(gè)對(duì)象都會(huì)有自己單獨(dú)的實(shí)例屬性和實(shí)例方法的副本,如果實(shí)例化5個(gè)對(duì)象,那么就會(huì)有5個(gè)對(duì)象的實(shí)例屬性和實(shí)例方法副本。This關(guān)鍵字引用它們的實(shí)例對(duì)象,也就是說,誰操作了實(shí)例方法,this就引用誰;訪問了哪個(gè)實(shí)例對(duì)象的屬性,this就引用這個(gè)實(shí)例對(duì)象。

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

下面用一個(gè)程序來表現(xiàn)實(shí)例屬性、實(shí)例方法、類屬性、類方法

function Mobile(kind,brand) {       this.kind=kind;//定義手機(jī)的種類,例如GSM/CDMA       this.brand=brand;//定義手機(jī)的品牌,this關(guān)鍵字表示用該構(gòu)造函數(shù)實(shí)例化之后的對(duì)象   }    /**//*   定義類的第二步是在構(gòu)造函數(shù)的原型對(duì)象中定義它的實(shí)例方法或其他屬性   該對(duì)象定義的任何屬性都將這個(gè)類的所有實(shí)例繼承。    */  //撥號(hào),這里只是返回電話號(hào)碼   Mobile.prototype.dial = function(phoneNo) {       return phoneNo;   };     /**//*

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

原型對(duì)象的屬性,注意,類方法沒有使用關(guān)鍵字this,因?yàn)樗麄冎粚?duì)他們的實(shí)際參數(shù)進(jìn)行操作。

*/   //開機(jī)關(guān)機(jī)方法   Mobile.turnOn=function() {      return "The power of mobile is on";   }   Mobile.turnOff=function() {      return "The power of mobile is off";   }     //類屬性,這樣他們就可以被用作常量,注意實(shí)際上他們并不是只讀的   Mobile.screenColor=64K;//假設(shè)該類手機(jī)的屏幕顏色都是64K彩屏的

子類化

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

 /*****  子類化  *****/  //下面是子類構(gòu)造函數(shù)智能型手機(jī)   function SmartPhone(os)   {     this.os=os;       }   //我們將Mobile對(duì)象作為它的原型   //這意味著新類的實(shí)例將繼承SmartPhone.prototype,   //后者由Mobile.prototype繼承而來   //Mobile.prototype又由Object.prototype繼承而來   SmartPhone.prototype=new Mobile(GSM,Nokia);   //下面給子類添加一個(gè)新方法,發(fā)送電子郵件,這里只是返回Email地址   SmartPhone.prototype.sendEmail=function(emailAddress) {     return this.emailAddress   }   //上面的子類化方法有一點(diǎn)缺陷,由于我們明確把SmartPhone.prototype設(shè)成了我們所創(chuàng)建的一個(gè)對(duì)象,所以就覆蓋了JS提供   //的原型對(duì)象,而且丟棄了給定的Constructor屬性。該屬性引用的是創(chuàng)建這個(gè)對(duì)象的構(gòu)造函數(shù)。但是SmartPhone對(duì)象集成了它的   //父類的constructor,它自己沒有這個(gè)屬性,明確設(shè)置著一個(gè)屬性可以解決這個(gè)問題:   SmartPhone.prototype.constructor=SmartPhone;   var objSmartPhone=new SmartPhone();//實(shí)例化子類

到此,關(guān)于“JavaScript中面向?qū)ο蠹夹g(shù)的模擬方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

標(biāo)題名稱:JavaScript中面向?qū)ο蠹夹g(shù)的模擬方法
網(wǎng)站鏈接:http://jinyejixie.com/article26/ghohjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、ChatGPT微信公眾號(hào)、網(wǎng)站營銷、微信小程序品牌網(wǎng)站建設(shè)

廣告

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

成都網(wǎng)站建設(shè)
青阳县| 松原市| 都江堰市| 宕昌县| 隆子县| 尤溪县| 绥阳县| 绥阳县| 临湘市| 德昌县| 廉江市| 资源县| 莱芜市| 石家庄市| 无锡市| 万荣县| 石景山区| 凤山市| 乐山市| 桂阳县| 武安市| 绿春县| 靖宇县| 石棉县| 澎湖县| 自贡市| 扎兰屯市| 滨海县| 荥经县| 南陵县| 神农架林区| 晋江市| 铁岭市| 海安县| 敦化市| 临湘市| 潍坊市| 洛宁县| 上饶县| 玉山县| 原平市|