Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何按值复制?_Javascript_Jquery_Jquery Datatables - Fatal编程技术网

Javascript 如何按值复制?

Javascript 如何按值复制?,javascript,jquery,jquery-datatables,Javascript,Jquery,Jquery Datatables,我有一个DataTables插件,定义为 var oTable = $('#table1').dataTable({ 'aaData': data, 'aoColumns': columns, 'bScrollInfinite': true, 'bScrollCollapse': true, 'iDisplayLength': 20, 'sScrollY': '300px' }); var oTable_Copy = oT

我有一个DataTables插件,定义为

var oTable = $('#table1').dataTable({
      'aaData': data,
      'aoColumns': columns,
      'bScrollInfinite': true,
      'bScrollCollapse': true,
      'iDisplayLength': 20,
      'sScrollY': '300px'
});

var oTable_Copy = oTable.slice();

现在,每当oTable中的任何值发生更改时,oTable_Copy中相应的值也会发生更改。如何防止oTable_Copy更改?

假设没有循环,最简单的方法是

var yourDeepCopyObj = JSON.parse(JSON.stringify(oTable));

你必须做一个克隆。。。您所做的只是复制引用。请先创建$'table1'的克隆,然后再次调用dataTable。或者你可以克隆oTable,但我不知道dataTable在内部是如何工作的,所以创建DOM元素的克隆并再次应用插件可能是更安全的方法。为什么不创建另一个元素并执行$'table1,table2'。dataTableobj或类似的操作,你希望通过这项工作能达到什么目的?可能是重复的我有点惊讶你接受了给出的答案。oTable是一个包含DOM元素的jQuery对象。在这种情况下,与JSON的转换不起作用。为什么接受这个答案?这不适用于DOM元素,OP在这里使用的就是DOM元素。我真的很惊讶这个答案被接受。就像我说的——假设没有循环。您可以尝试.extendtrue、source、dest,但在这种情况下会有循环。以及可能的事件处理程序和其他状态。转换JSON并不是解决这个问题的方法。做出无论如何都无法实现的假设是没有意义的。编辑:$.extend对于克隆DOM元素也不有用。