Javascript 将window.onresize合并到OO JS类中

Javascript 将window.onresize合并到OO JS类中,javascript,window-resize,Javascript,Window Resize,我只是想更好地构造Javascript,并想知道如何将window.onresize合并到返回的对象中,如下所示: var baseline = function(){ var tall, newHeight, target, imgl, cur, images = []; return { init: function(selector, target){ this.images = document.querySelectorAl

我只是想更好地构造Javascript,并想知道如何将window.onresize合并到返回的对象中,如下所示:

var baseline = function(){

    var tall, newHeight, target, imgl, cur, images = [];

    return {

        init: function(selector, target){
            this.images = document.querySelectorAll(selector);
            this.target = target;
            this.setbase(this.images);
            window.onresize = this.setbase(this.images);
        },

        setbase: function(imgs){
            this.imgl = imgs.length;
            if(this.imgl !== 0){
                while(this.imgl--){
                    this.cur = imgs[this.imgl];
                    this.cur.removeAttribute("style");
                    this.tall = this.cur.offsetHeight;
                    this.newHeight = Math.floor(this.tall / this.target) * this.target;
                    this.cur.style.maxHeight = this.newHeight + 'px';
                }
            } else {
                return false;
            }
        }

    }

}();
人们会这样做吗?这样行吗?谢谢

编辑:

这样调用:

window.onload = function(){
        baseline.init('img', '24');
    };
我希望在调整窗口大小时,使用与初始init函数调用相同的参数调用baseline.init…

以下是主要错误

init: function(selector, target){
    this.images = document.querySelectorAll(selector);
    this.target = target;
    this.setbase(this.images);
    // This line says call setbase now and assign the result of that
    // as the onresize handler
    window.onresize = this.setbase(this.images);
},
  • 您的
    this.images
    没有指向您创建的
    var images=[]
    。这适用于使用原型样式对象时。您应该只在函数中使用
    图像
  • 有些变量看起来只在setBase中使用,它们应该是局部变量
  • 看着你的对象,很难判断它应该做什么,听起来你在一个对象中包装代码只是为了把它包装成一个对象。基线是什么意思
这里有一个更好的代码版本,您应该阅读和理解,这样您就可以决定要使用什么模式以及它们实际如何工作。您正在混合这两种模式,即使您不打算这样做。诀窍在于,按照您编写它的方式(模块模式),不需要在代码中使用
this
,它们实际上是模块中的局部变量

这是主要的错误

init: function(selector, target){
    this.images = document.querySelectorAll(selector);
    this.target = target;
    this.setbase(this.images);
    // This line says call setbase now and assign the result of that
    // as the onresize handler
    window.onresize = this.setbase(this.images);
},
  • 您的
    this.images
    没有指向您创建的
    var images=[]
    。这适用于使用原型样式对象时。您应该只在函数中使用
    图像
  • 有些变量看起来只在setBase中使用,它们应该是局部变量
  • 看着你的对象,很难判断它应该做什么,听起来你在一个对象中包装代码只是为了把它包装成一个对象。基线是什么意思
这里有一个更好的代码版本,您应该阅读和理解,这样您就可以决定要使用什么模式以及它们实际如何工作。您正在混合这两种模式,即使您不打算这样做。诀窍在于,按照您编写它的方式(模块模式),不需要在代码中使用
this
,它们实际上是模块中的局部变量


啊,本·豪德尔!你必须在这个问题中加入更多的细节-你打算如何将其纳入?作为一种方法?@Jeffescalate在上面的编辑中提供了详细信息!啊,本·豪德尔!你必须在这个问题中加入更多的细节-你打算如何将其纳入?作为一种方法?@Jeffescalate在上面的编辑中提供了详细信息!