亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Javascript基于OOP實(shí)實(shí)現(xiàn)探測(cè)器功能代碼實(shí)例

瀏覽:28日期:2023-10-17 10:41:35

代碼如下

<script>/*所有探測(cè)器都有探測(cè)的方法和分析的方法,分析當(dāng)前的瀏覽器環(huán)境,不管是瀏覽器還是nodejs*//*container容器探測(cè)器*//*link鏈接探測(cè)器*//*外層用一個(gè)立即執(zhí)行的匿名函數(shù)包裹住,防止一些函數(shù)聲明或者變量泄露到外面*/!function(global){ function DetectorBase(configs){//不讓外部通過(guò)直接調(diào)用方式調(diào)用,必須使用new,不使用new就會(huì)報(bào)錯(cuò) /*使用new的話,this就是最后要返回的對(duì)象,this instanceof DetectorBase應(yīng)該返回true,不是的話說(shuō)明沒(méi)有直接通過(guò)new調(diào)用*/ if(!this instanceof DetectorBase){/**/ throw new Error(’Do not invoke without new.’); } this.configs=configs;/*所有的探測(cè)器都會(huì)有config屬性*/ this.analyze();/*所有的探測(cè)器初始化的時(shí)候都需要解析一下數(shù)據(jù)*/ } DetectorBase.prototype.detect=function(){/*代表一個(gè)抽象的探測(cè)方法,基類不是具體的一個(gè)探測(cè)器所以實(shí)現(xiàn)沒(méi)有意義,用來(lái)說(shuō)明需要實(shí)現(xiàn)這樣一個(gè)方法*/ throw new Error(’Not implemented’); } DetectorBase.prototype.analyze=function(){ console.log(’analyzing...’); this.data='###data###'; } /***具體實(shí)例***/ function LinkDetector(links){/*鏈接探測(cè)器,同理必須通過(guò)new來(lái)構(gòu)造*/ DetectorBase.apply(this,arguments); if(!this instanceof LinkDetector){ throw new Error(’Do not invoke without new.’); } this.links=links; } function ContainerDetector(containers){ DetectorBase.apply(this,arguments); if(!this instanceof ContainerDetector){ throw new Error(’Do not invoke without new.’); } this.containers=containers; } //inherit first /*LinkDetector和ContainerDetector都可能掛載一些自己的方法 需要注意,一定要先實(shí)現(xiàn)原型鏈的繼承,再去擴(kuò)展。 因?yàn)槔^承的時(shí)候要改寫LinkDetector的prototype屬性*/ inherit(LinkDetector,DetectorBase); inherit(ContainerDetector,DetectorBase); //expand later LinkDetector.prototype.detect=function(){ console.log(’Loading data:’+this.data); console.log(’Link detection started.’); console.log(’Scaning links:’+this.links); } ContainerDetector.prototype.detect=function(){ console.log(’Loading data:’+this.data); console.log(’Container detection started.’); console.log(’Scaning containers:’+this.containers); } //prevent from being altered /*不希望監(jiān)控程序被改寫,不可刪,不可擴(kuò)展,不可寫*/ Object.freeze(DetectorBase); Object.freeze(DetectorBase.prototype); Object.freeze(LinkDetector); Object.freeze(LinkDetector.prototype); Object.freeze(ContainerDetector); Object.freeze(ContainerDetector.prototype); //export to global object /*通過(guò)defineProperties一次性把3個(gè)類暴露在外面,同時(shí)保護(hù)它們不可被枚舉,不可被刪除和改寫*/ Object.defineProperties(global,{ LinkDetector:{value:LinkDetector}, ContainerDetector:{value:ContainerDetector}, DetectorBase:{value:DetectorBase} }); function inherit(subClass,superClass){// subClass.prototype=Object.create(superClass.prototype); subClass.prototype.constructor=subClass; }}(this);var cd=new ContainerDetector(’#abc #def #ghi’);var ld=new LinkDetector(’http://www.taobao.com http://www.tmall.com http://www.baidu.com’);cd.detect();ld.detect();</script>

運(yùn)行結(jié)果

Javascript基于OOP實(shí)實(shí)現(xiàn)探測(cè)器功能代碼實(shí)例

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 久久精品爱国产免费久久 | 亚洲精品成人网 | 欧美日韩无线码免费播放 | 黄色片免费播放 | 国产日产欧产麻豆精品精品推荐 | 日韩18视频在线观看 | 欧洲女人性开放视频在线观看 | 成年视频xxxxx免费播放软件 | 欧美一级级毛片 | 色婷婷在线视频观看 | 黄网址大全免费观看免费 | 国产欧美日韩综合精品二区 | 欧美成人毛片在线视频 | 黄色的毛片 | 麻豆精品免费视频入口 | 国产72av国片精品jk制服 | 国产成人精品免费视频大全麻豆 | 末成年一级在线看片 | 免费黄色小视频在线观看 | 欧美巨吊 | 成人观看网站a | 亚洲综合激情另类专区 | 神马午夜51| 婷婷伊人| 亚洲一级毛片免费看 | 高h喷水荡肉爽文1v1 | 亚洲一区黄色 | 欧美日韩国产另类一区二区三区 | 国产精品久久网 | xxⅹ丰满妇女与善交 | 一级做a免费视频观看网站 一级做a爰毛片 | 日韩性黄色一级 | 一级片www| 欧美日韩顶级毛片www免费看 | 一级片在线免费播放 | 中文字幕视频不卡 | 美国免费高清一级毛片 | 毛片中文字幕 | 欧美一级久久久久久久久大 | 亚洲欧美日韩精品久久亚洲区色播 | 男人午夜免费视频 |