在 JavaScript 中深度克隆任意对象
提供了对对象、数组、数字、字符串、映射的无误的深度克隆 JavaScript 中的集合、承诺等。
npm install clone
(它也可以与 browserify、ender 或独立运行。您可能希望使用
在 browserify 中使用 noParse 选项,以减少生成的文件大小,因为通常
(浏览器中不需要缓冲区。)
var clone = require('clone');
var a, b;
a = { foo: { bar: 'baz' } }; // a 的初始值
b = clone(a); // 将 a 克隆为 b
a.foo.bar = 'foo'; // 修改 a
console.log(a); // 显示 a
console.log(b); // 显示 b这将打印:
* `value`: 要克隆的值,允许任何类型。 * `circular`: 布尔值,默认为 `true`。 如果您确定 `obj` 不包含循环引用,则调用 `clone`,将 `circular` 设置为 `false`。如果需要,这将提高性能。如果传递的 `obj` 为 `undefined` 或 `null`,则不会出错。 * `depth`: 要克隆的对象的深度(可选,默认为 `Infinity`)。 * `prototype`: 设置用于克隆 `Object` 时要使用的原型。 (可选,默认为要克隆的值的 `__proto__` ,即克隆的对象将具有与原始对象相同的原型)。 * `includeNonEnumerable`: 如果要克隆的非枚举属性,则将其设置为 `true`。原型链上的非枚举属性将被忽略。 (可选,默认为 `false`)
### `clone(value, opts)`
你可以使用单个 `opts` `Object` 来指定 `circular`、`depth`、`prototype` 和 `includeNonEnumerable`。
[](http://npm-stat.com/charts.html?package=clone)暂无开放 Issues,或尚未同步最近议题。