我把endhander写在里面和写在外面有什么好坏处?

我把endhander写在里面和写在外面有什么好坏处?

<!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>
<style>
    .box {
        width: 200px;
        height: 200px;
        background-color: red;
    }
</style>

<body>
    <div class="box" id="box"></div>
    <script>
        // 1, 扫到手势
        const boxDOM = document.getElementById('box');

        function swipe(DOM, cb) {
            const start = {};
            const threshold = {
                time: 500,
                distance: 100
            }

            DOM.addEventListener('touchstart', function (evt) {
                evt.preventDefault();
            }, false)

            DOM.addEventListener('pointerdown', startHandler, false);

            function startHandler(evt) {
                start.x = evt.pageX;
                start.y = evt.pageY;
                start.time = new Date().getTime();

                DOM.addEventListener('pointerup', endHandler, false);
                DOM.addEventListener('pointercancel', endHandler, false);

                function endHandler(evt) {
                    const delta = {};
                    let direction = '';
                    delta.time = new Date().getTime() - start.time;
                    delta.x = evt.pageX - start.x;
                    delta.y = evt.pageY - start.y;
                    if (delta.time > threshold.time
                        || (Math.abs(delta.x) < threshold.distance)
                        && (Math.abs(delta.y) < threshold.distance)) {
                        return;
                    } else {
                        if (Math.abs(delta.x) > Math.abs(delta.y)) {
                            if (delta.x > 0) {
                                direction = 'right'
                            } else {
                                direction = 'left'
                            }
                        } else {
                            if (delta.y > 0) {
                                direction = 'down'
                            } else {
                                direction = 'up'
                            }
                        }
                        cb.call(DOM, direction)
                    }

                    DOM.removeEventListener('pointerup', endHandler,false);
                    DOM.removeEventListener('pointercancel', endHandler,false);
                }
            }
        }

        swipe(boxDOM, function (direction) {
            console.log(this);
            console.log(direction);
        })
    </script>
</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2023-04-10 11:30:36

同学你好,endhander放到外面,你试过没有?如果试过以后发没发现有异常?如果没有试一试看看最后的结果是什么。

祝学习愉快!

  • 试过了 都没发现异常

    2023-04-10 20:24:27
  • 建议同学将两套方式都发出来,老师这边测试一下。

    另老师对于课程中的代码的理解是,因为这本身就属于一个需求。那么在写的时候就不需要考虑其中的某个方法会再次进行复用,所以将整个方法嵌套(耦合)到一起去了,我个人认为没什么好坏之分,类似这种需求先实现,在进行优化这个思路是没问题。同学所说的拆分好处坏处也许就是问的这个吧。

    2023-04-11 09:40:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师