前提知识
在实现克隆函数之前,你需要明白以下一些概念,如果你已经明白了,请直接阅读 “实现” 部分.
什么是值类型、引用类型?
很多新手可能会对 “值类型”、“引用类型”、“原始类型”、“基本类型”等等名称感到困惑. 这里就解释一下这些概念.
一个事物是可以有多种区分形式的.
比如,猫,我们可以说它是猫科动物,也可以说它是哺乳动物,也可以说它是食肉动物.
在编程语言的世界里也是一样的.
在JavaScript的世界里, 数据被定义为以下 7 种 数据类型 :
-
6种 原始类型(又叫 基本类型):
- Boolean
- Null
- Undefined
- Number
- String
- Symbol
- 和 Object
(需要注意的是, 名词从英文翻译成中文,可能会出现多种叫法,比如“primitive type”,中文叫 “原始类型”,也有叫“基本类型”.)
另外,根据变量值传递的方式,我们又可以将数据区分为“值类型”和“引用类型”.
- 值类型 : 数据在传递和赋值时,数据将自己复制一份给对方.
JavaScript中原始类型都属于值类型(string, number, boolean, null, undefined, symbol).
- 引用类型 : 在传递和赋值时, 数据将自身的引用(又叫“地址”、“指针”)给对方.
JavaScript中数组、函数、自定义对象,三种属于引用类型.
更详细的解释请阅读: //TODO: (新建文章,介绍 值类型、引用类型)