为什么这个函数只在两个初始化时才返回一个对象?

时间:2018-04-16 12:30:02

标签: javascript

我初始化了两个对象,但是当我调整大小(触发一个写入每个对象名称的函数)时,它只写入 last 对象。

我刚刚从jQuery切换到编写vanilla Javascript,所以如果代码没有意义,缺少某些内容或者只是完全错误,请告诉我!我不仅欢迎批评,我只想学习正确的方法。

无论如何,任何帮助弄清楚为什么它只返回第二个/最后一个对象? 的 CodePen https://codepen.io/kmarmet/pen/NYQvWV?editors=1011

代码

const Obj = function(options) {
    const cont = document.querySelector('.cont');
    const obj = options.objClass;
    let delay = function() {};
    const whenDone = () => cont.innerHTML += `${obj}<br>`;

    return window.onresize = () => {
        clearTimeout(delay);
        return delay = setTimeout(whenDone, 100);
    };
};

const one = new Obj({
    sliderClass: 'slider-1'
});

const two = new Obj({
    objClass: 'slider-2'
});

谢谢!

1 个答案:

答案 0 :(得分:4)

您只能通过window.onresize指定一个事件处理程序。请改用addEventListener

window.addEventListener('resize', () => {
        clearTimeout(delay);
        delay = setTimeout(whenDone, 100);
});

此外,从构造函数返回一些东西没有多大意义,也没有从resize事件监听器返回。