qq_唐大虾_03914583
2017-07-05 19:49
为什么没有OOP的PPT,我打算做笔记,但是实在是懒得手打了
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>探测器</title>
<script type="text/javascript">
!function(global){
function DetectorBase(configs){
if(!this instanceof DetectorBase){
throw new Error('Do not invoke without new.');
}
this.configs = configs;
this.analyze();
}
DetectorBase.prototype.detect = function(){
throw new Error('Not implemented');
};
DetectorBase.prototype.analyze = function(){
console.log('analyzing...');
this.data = '###data###';
};
function LinkDetector(links){
if(!this instanceof LinkDetector){
throw new Error('Do not invoke without new.');
}
this.links = links;
DetectorBase.apply(this,arguments);
}
function ContainerDetector(containers){
if(!this instanceof ContainerDetector){
throw new Error('Do not invoke without new.');
}
this.containers = containers;
DetectorBase.apply(this,arguments);
}
//inherit first
inherit(LinkDetector,DetectorBase);
inherit(ContainerDetector, DetectorBase);
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('Link detection started');
console.log('Scaning containers:'+this.containers);
};
//prevent from being alerted
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
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>
</head>
<body>
</body>
</html>
JavaScript深入浅出
281112 学习 · 1020 问题
相似问题