Javascript 如何初始化一次并将相同的值一次又一次地传递给另一个函数?

Javascript 如何初始化一次并将相同的值一次又一次地传递给另一个函数?,javascript,jquery,Javascript,Jquery,考虑以下函数。每次调整浏览器大小时,以及每次我希望将相同的This.original\u ul初始值传递到此函数doLayout()时,都会调用此函数。它在初始化函数中仅单独计算一次。现在发生的事情是第二次调用时,$ul变量的更改也反映在上。我怎样才能防止这种情况 doLayout : function () { alert('doLayout'); var size, $ul, $lis, loop, i; size = this.computeElesPerCol()

考虑以下函数。每次调整浏览器大小时,以及每次我希望将相同的
This.original\u ul
初始值传递到此函数
doLayout()
时,都会调用此函数。它在初始化函数中仅单独计算一次。现在发生的事情是第二次调用时,
$ul
变量的更改也反映在
上。我怎样才能防止这种情况

doLayout : function () {
    alert('doLayout');
    var size, $ul, $lis, loop, i;
    size = this.computeElesPerCol();
    $ul = this.original_ul; // I wanna  preserve this between calls
    $lis = $ul.children().filter(':gt(' + (size - 1) + ')');
    loop = Math.ceil($lis.length / size);
    i = 0;

    $ul.css('float', 'left').wrap("<div style='overflow: hidden'></div>");

    for (; i < loop; i = i + 1) {
      $ul = $("<ul />").css('float', 'left').append($lis.slice(i * size, (i * size) + 4)).insertAfter($ul);
      $ul.css("list-style","none");
    }
  }
尝试以下方法:


没有任何更改该代码中的“original_ul”属性。如何设置?这是什么?在“resize”事件中调用该代码将导致非常糟糕的性能。当用户拖动窗口句柄时,浏览器会频繁地触发“调整大小”命令,对每个事件进行DOM操作会非常慢。@Pointy我们通过setTimeout来处理它,以避免一直触发。啊,好吧:-)知道该函数中的
这个
是什么可能会有帮助。@Pointy编辑了这个问题以提供更多信息。这是将每个更改应用于克隆,而这些更改不会得到响应更新至original@Geek:“…对$ul变量的更改也反映在这一点上。我怎样才能防止这种情况发生?”-这不正是您要求的吗?
     initialize:function () {
    var webFloatLayout = this;
    //call super parent initialize which will set the main dom element of component
    ec.comp.Component.prototype.initialize.call(this);
    var innerDivId = this.id + "_inner";
    innerDivId = innerDivId.replace(new RegExp(ec.config.separator, "g"), "\\" + ec.config.separator);
    $(document).ready(function() {
      webFloatLayout.original_ul = $("#" + innerDivId).find(">:first-child");
      webFloatLayout.original_ul.css("list-style","none");
      webFloatLayout.layout();
    });
  },
$ul = this.original_ul.clone();