适配器2021-09-30

目录

普通适配器: 

核心处

两个库的适配器: 

核心处: 

小结:


普通适配器: 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <div id="app"></div>
    <script>
        //1.定义函数
        function demo(arr) {
            //第一个成员表示标题
            var h1 = document.createElement('h1');
            h1.innerHTML = arr[0];
            //第二个成员表示内容
            var p = document.createElement('p');
            p.innerHTML = arr[1];
            //第三个成员表示时间
            var span = document.createElement('span');
            span.innerHTML = arr[2];
            //上树
            app.appendChild(h1);
            app.appendChild(p);
            app.appendChild(span);
        }

        // //4.数据变了,方法需要重写
        // function demo(obj) {
        //     //第一个成员表示标题
        //     var h1 = document.createElement('h1');
        //     h1.innerHTML = obj.title;
        //     //第二个成员表示内容
        //     var p = document.createElement('p');
        //     p.innerHTML = obj.content;
        //     //第三个成员表示时间
        //     var span = document.createElement('span');
        //     span.innerHTML = obj.time;
        //     //上树
        //     app.appendChild(h1);
        //     app.appendChild(p);
        //     app.appendChild(span);
        // }

        // var arr = ['新闻标题', '新闻内容', '2021-9-30'];
        //3.为了增强数据信息的语义化,将数据作为对象提供
        var obj = {
            title: '新闻标题',
            content: '新闻内容',
            time: '2021-9-30'
        }
        // //2.测试
        // demo(arr);//正常执行//3处传递的是对象,数组的方法不能用了
        //5.测试
        // demo(obj);//正常执行

        //6.由于数据变了重写方法,代价太大,所以需要适配器
        //定义适配器,将对象适配成数组,然后统一使用数组的格式
        function dataAdptor(obj) {
            return [obj.title, obj.content, obj.time]
        }
        //7.使用适配器适配的数据
        demo(dataAdptor(obj));//正常执行

    </script>
</body>

</html>

核心处:

 //6.由于数据变了重写方法,代价太大,所以需要适配器
        //定义适配器,将对象适配成数组,然后统一使用数组的格式
        function dataAdptor(obj) {
            return [obj.title, obj.content, obj.time]
        }

 

两个库的适配器:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button>切换</button>
    <h1>内容</h1>
    <!-- 1.引用 -->
    <!-- <script src="./自用库01面向对象优化.js"></script> -->
    <!-- 3.引用jQ库,不想重新写一遍方法实现的交互,就需要适配她-->
    <script src="./jquery1.12.js"></script>
    <script>
        //4.如果开发时间短,没有充足的时间去重写页面,就需要定义适配器,兼容这两个库
        var QAQ = {
            //5.适配绑定事件方法
            bindEvent: function (dom, type, fn) {
                $(dom).on('click', fn)//此处传入type也可
            },
            //6.适配修改样式方法
            css: function (dom, key, value) {
                $(dom).css(key, value)
            },
            //7.适配获取样式方法
            getStyle: function (dom, key) {
                return $(dom).css(key)//注意:前面不能加return会打断函数
            }
        };

    </script>
    <script>
        // 2.老方法实现交互
        var h1 = document.getElementsByTagName('h1')[0];
        var btn = document.getElementsByTagName('button')[0];
        //设置交互:点击button切换h1的显隐
        QAQ.bindEvent(btn, 'click', function () {
            //切换显隐
            QAQ.css(h1, 'display', QAQ.getStyle(h1, 'display') === 'block' ? 'none' : 'block')
        })
    </script>
    <!-- 注意:如果时间足够,应该重写页面,不然两个库的相同方法在一起显得很呆 -->
</body>

</html>

核心处: 

   //4.如果开发时间短,没有充足的时间去重写页面,就需要定义适配器,兼容这两个库
        var QAQ = {
            //5.适配绑定事件方法
            bindEvent: function (dom, type, fn) {
                $(dom).on('click', fn)//此处传入type也可
            },
            //6.适配修改样式方法
            css: function (dom, key, value) {
                $(dom).css(key, value)
            },
            //7.适配获取样式方法
            getStyle: function (dom, key) {
                return $(dom).css(key)//注意:前面不能加return会打断函数
            }
        };

小结:

        核心思想就是:用一个原有的方法(函数或对象),用另一个地方(或库)的方法进行重新编写方法的执行即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值