Javascript基于OOP实实现探测器功能代码实例
网络编程 2021-07-04 14:06www.168986.cn编程入门
这篇文章主要介绍了Javascript基于OOP实实现探测器功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
代码如下
<script> /所有探测器都有探测的方法和分析的方法,分析当前的浏览器环境,不管是浏览器还是nodejs/ /container容器探测器/ /link链接探测器/ /外层用一个立即执行的匿名函数包裹住,防止一些函数声明或者变量泄露到外面/ !function(global){ function DetectorBase(configs){//不让外部通过直接调用方式调用,必须使用new,不使用new就会报错 /使用new的话,this就是要返回的对象,this instanceof DetectorBase应该返回true,不是的话说明没有直接通过new调用/ if(!this instanceof DetectorBase){// throw new Error('Do not invoke without new.'); } this.configs=configs;/所有的探测器都会有config属性/ this.analyze();/所有的探测器初始化的时候都需要解析一下数据/ } DetectorBase.prototype.detect=function(){/代表一个抽象的探测方法,基类不是具体的一个探测器所以实现没有意义,用来说明需要实现这样一个方法/ throw new Error('Not implemented'); } DetectorBase.prototype.analyze=function(){ console.log('analyzing...'); this.data="###data###"; } /具体实例/ function LinkDetector(links){/链接探测器,同理必须通过new来构造/ 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都可能挂载一些自己的方法 需要注意,一定要先实现原型链的继承,再去扩展。 因为继承的时候要改写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 /不希望监控程序被改写,不可删,不可扩展,不可写/ 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 /通过defineProperties一次性把3个类暴露在外面,保护它们不可被枚举,不可被删除和改写/ 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://.taobao. http://.tmall. http://.baidu.'); cd.detect(); ld.detect(); </script>
运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程