如何克隆js对象?

Har*_*OTA 18 javascript

可能重复:
克隆JavaScript对象的最有效方法是什么?

如何使用以下引用克隆js对象:

{ ID: _docEl,
  Index: next,
  DocName: _el
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

tho*_*ter 10

您将不得不迭代对象并复制其所有属性.

然后,如果它的任何属性也是对象,假设你也想要克隆它们,你将不得不递归它们.

这里有各种方法: 克隆JavaScript对象的最有效方法是什么?


Bol*_*ock 6

根据thomasrutter的建议(未经测试的代码),我就是这样做的:

function cloneObj(obj) {
    var clone = {};

    for (var i in obj) {
        if (obj[i] && typeof obj[i] == 'object') {
            clone[i] = cloneObj(obj[i]);
        } else {
            clone[i] = obj[i];
        }
    }

    return clone;
}
Run Code Online (Sandbox Code Playgroud)

  • `obj.i`不起作用,你将从字面上访问``i``属性,你需要使用括号表示法,例如`obj [i]` (2认同)

Mah*_*vcs 5

你可以使用jQuery.extend:

// Shallow copy
var newObject = jQuery.extend({}, oldObject);

// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);
Run Code Online (Sandbox Code Playgroud)

以下帖子非常有帮助:

在JavaScript中深度克隆对象的最有效方法是什么?