美文网首页
JS 结构型设计模式 --外观模式

JS 结构型设计模式 --外观模式

作者: 麻辣小面瘫 | 来源:发表于2018-01-29 21:03 被阅读0次

外观模式:为一组复杂的子系统接口提供一个更加高级的统一接口,在js中可以用于消除一些的底层的兼容性

function addEvent(dom,type,fn){
    if(dom.addEventListener){ //支持dom2级操作
        dom.addEventListener(type,fn)
    }else if(dom.attachEvent){ //不支持dom2 但支持attach方法
        dom.attachEvent('on'+type,fn)
    }else{ //上面上个方法都不支持的方式
        dom['on'+type] = fn;
    }
}
比如为dom添加事件,这个时候需要考虑到浏览器之间的不同兼容性,老旧版本的兼容性;
通过使用对浏览器能力的检测(dom.addEventListener)来使用不同的方法来添加事件

function getEvent(event){
    //标准浏览器返回event,IE返回window.event
    return event || window.event;
}
//event在标准与ie中也存在差异

function getTarget(event){
    var event = getEvent(event);
    //event.target,IE返回event.srcElement
    return event.target || event.srcElement;
}
//event.target在标准与ie中也存在差异

function preventDefault(event){
    var event = getEvent(event);
    if(event.preventDefault){ //标准浏览器的event.prevent()
        event.preventDefault();
    }else{
        event.returnValue = false;  //IE
    }
}
//event.preventDefault在标准与ie中也存在差异


function getCss(dom){
    // 利用判断是否支持currentStyle(是否为ie)
    return dom.currentStyle ? dom.currentStyle : document.defaultView.getComputedStyle(dom, null);
}

例子如下:

<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="index.js" type="text/javascript" charset="utf-8"></script>
        <link rel="stylesheet" href="d.css" />
        <title></title>
        <style>
            .d1{
                margin:0 auto;
                width:100px;
                height:30px;
            }
        </style>
    </head>
    <body>
        <div id="d1" class="d1 d2">11111111111</div>
        <script>
            window.onload = function(){
                var d = document.getElementById('d1');
                addEvent(d,'click',function(){
                    console.log(123)
                })
                console.log(getCss(d).width);
                console.log(getCss(d).position);
            }
        </script>
    </body>
</html>

d.css

.d2{
    position: relative;
}

相关文章

  • Android设计模式——外观模式(七大结构型)

    1.外观模式介绍 外观模式(Facade Pattern),是七大结构型设计模式之一。 外观模式运...

  • JS 结构型设计模式 --外观模式

    外观模式:为一组复杂的子系统接口提供一个更加高级的统一接口,在js中可以用于消除一些的底层的兼容性 例子如下: d...

  • js设计模式(结构型设计模式)-外观模式

    外观模式:为一组复杂的子系统提供一个更高级的统一接口,通过这个接口可以对子系统访问很轻松。就像我们点的套餐一样,...

  • 结构型模式:外观模式

    文章首发:结构型模式:外观模式 七大结构型模式之五:外观模式。 简介 姓名 :外观模式 英文名 :Facade P...

  • Android设计模式之(21)----外观模式

    外观模式 外观模式属于结构型设计模式. 简单来说外观模式就是一个比较牛逼的封装理解而已.将一系列的操作,功能封装在...

  • S13. 外观模式

    外观模式 外观模式又叫门面模式,是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 外观模...

  • 结构型设计模式 - 外观模式

    为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用(子系统往往因为不断演...

  • 结构型设计模式-外观模式

    定义 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更...

  • 结构型设计模式.外观模式

    <在于降低系统的复杂程度> 概念理解 定义:又叫门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统...

  • 结构型设计模式 — 外观模式

    笨蛋自以为聪明,聪明人才知道自己是笨蛋。 — 莎士比亚 写在前面 外观模式也可以称为门面模式,在我们开发Andro...

网友评论

      本文标题:JS 结构型设计模式 --外观模式

      本文链接:https://www.haomeiwen.com/subject/xkmfzxtx.html