# clone 中文文档

规范地址：https://npmcn.com/package/clone/

版本：2\.1\.2
npm 元数据更新时间：2023-07-12T19:09:25.110Z
中文译文更新时间：2026-11-05T15:21:02.697Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/clone
原文对照：https://npmcn.com/package/clone/?lang=original
项目主页：https://github.com/pvorb/node-clone#readme
源码仓库：https://github.com/pvorb/node-clone

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：15.9 kB，6 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>=0\.8
- 运行依赖：0 个
- 首次发布：2011-09-03T01:49:48.705Z
- 最新版本发布：2018-03-21T21:07:10.142Z
- 近 30 天下载量：350886745（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：38（近 12 个月 0 个）

## 中文简介

物体和阵列的深克隆

## 安装

```sh
npm install clone
```

也可以使用：`pnpm add clone`、`yarn add clone`、`bun add clone`

## README

# 克隆

[![build status](https://secure.travis-ci.org/pvorb/node-clone.png)](http://travis-ci.org/pvorb/node-clone)

[![info badge](https://nodei.co/npm/clone.png?downloads=true&downloadRank=true&stars=true)](http://npm-stat.com/charts.html?package=clone)

提供防伪 _深克隆_ 用于JavaScript中的对象、数组、数字、字符串等.

## 安装

```
npm install clone
```

(也与浏览器,ender或独立相通

## 示例

```javascript
var clone = require('clone');

var a, b;

a = { foo: { bar: 'baz' } };  // initial value of a

b = clone(a);                 // clone a -> b
a.foo.bar = 'foo';            // change a

console.log(a);               // show a
console.log(b);               // show b
```

这将打印 :

```javascript
{ foo: { bar: 'foo' } }
{ foo: { bar: 'baz' } }
```

**克隆** 克隆简单对象(即使是自定义原型),阵列, 日期对象,和 RegExp 对象。 一切都是循环复制的,所以你 例如,可以在对象的数组中复制日期.

## API 密码

`clone(val, circular, depth)`

-   `val` -- 您想要克隆的值, 任何允许的类型
    
-   `circular` -- 布尔
    
    打电话 `clone` 与 `circular` 设置为 `false` 如果你确信 `obj` 没有循环引用。 如有必要,这将提高业绩. 如果 `undefined` 或者说 `null` 以 `obj`。 。 。 .
    
-   `depth` -- 要复制对象的深度( 可选的, 默认为无限)
    

`clone.clonePrototype(obj)`

-   `obj` -- 要克隆的对象

一个原型克隆是 [奥兰·隆尼(Oran Looney)的描述](http://oranlooney.com/functional-javascript/)。 。 。 .

## 循环参考文献

```javascript
var a, b;

a = { hello: 'world' };

a.myself = a;
b = clone(a);

console.log(b);
```

这将打印 :

```javascript
{ hello: "world", myself: [Circular] }
```

这么说吧, `b.myself` 指点 `b`没有 `a`不错!

## 测试

```
npm test
```

## 卡维特

一些特殊对象,如套接字或 `process.stdout`编号 :`stderr` 已知没有 可复制。 如果您找到其他无法复制的对象, 请 [打开一个 问题](https://github.com/pvorb/node-clone/issues/new)。 。 。 .

## 错误和问题

如果你遇到任何错误或问题,请随意 [打开一个问题 : gi](https://github.com/pvorb/node-clone/issues) 或者发邮件给我 [保罗@vorba.ch](mailto:paul@vorba.ch)如果你用我的代码,我也总是想听到你的声音.

## 许可证

版权:2011-2015年 [保罗·福尔巴赫](http://paul.vorba.ch/) 财务报告和审定财务报表 [捐助者](https://github.com/pvorb/node-clone/graphs/contributors)。 。 。 .

特此免费准许任何人获得《公约》副本 该软件和相关文档文件(“软件”),用于处理 软件不受限制,包括不受限制 使用、复制、修改、合并、出版、分发、分许可证和/或出售 软件,并允许获得软件的人这样做, 符合下列条件:

上述版权通知和这项许可通知应载入所有 软件的复制件或大部分.

软件是提供的 " AS IS " ,没有任何形式的恐惧、排斥或 包括但不限制于雇佣军的保障 特别是目的和非目的。 永远也不要 A. 任何索赔、索赔或其他负债,不论是否属于 或与之有关的条约、协定或其他文书的行动 软件或软件的使用或其他交易.

## 常见问题

### clone 是什么？

物体和阵列的深克隆

### 如何安装 clone？

在项目目录运行 npm install clone，或使用 pnpm add / yarn add / bun add。

### clone 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/clone 是否存在。

### clone 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### clone 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=0\.8。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### clone 可以商用吗？

clone 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### clone 的下载量有多少？

根据 npm 官方下载统计，clone 在 2026/10/05 – 2026/11/03 这 30 天内被下载 350,886,745 次，日均约 11,696,225 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### clone 还在维护吗？

最新版本 2\.1\.2 发布于 2018/03/22（8 年前）；至今共发布 38 个版本，其中过去 12 个月发布了 0 个；首次发布于 2011/09/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

