问答详情
源自:-

为什么没有OOP的PPT,我打算做笔记,但是实在是懒得手打了

为什么没有OOP的PPT,我打算做笔记,但是实在是懒得手打了

提问者:qq_唐大虾_03914583 2017-07-05 19:49

个回答

  • moon123river
    2017-07-18 16:11:40

    <!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>