JS對象克隆
標簽:
JavaScript
原始数据类型(5种):undefined null number string boolean
引用数据类型(1种):
虽然引用数据类型只有1种,但是它可以将多种原始的数据存在一个单元中,这也就是为什么它被称为“复合数据类型”,也就是对象——Object。
原始数据类型和引用数据类型的区别:
首先咱们先来看下它的概念,概念如果看不太明白,没有关系,我会在之后举例。
原始数据类型:在内存中,存放在栈中的简单数据段,也就是说,他们直接存储在变量访问的位置。
引用数据类型:在内存中,存放在堆中的对象,就是说,存储在变量处的值是一个指针,指向存储对象的内存处。
举例说明:
原始数据类型就像一个文件,我们可以直接找到并打开的过程。
引用数据类型就像一个文件的快捷方式,我们是通过快捷方式找到文件的位置,打开的过程。
<script>
function clone(obj) { var o if (obj instanceof Array) {
o = [] let len = obj.length
whlie(len--) {
o[len] = clone(obj[len])
} return o
} else if (obj instanceof Object) {
o = {} for (let key in obj) {
o[key] = clone(obj[key])
} return o
} else { return obj
}
} // 代码优化
function clone2(obj) { let o = obj instanceof Array ? [] : {} for (let key in obj) { if (obj[key] instanceof Object) { //判断对象中是否还有对象,有,继续递归
o[key] = clone2(obj[key])
} else {
o[key] = obj[key] //只要不是对象就直接放进去
}
} return o
} // 代码再优化
function clone3(obj) { let o = obj instanceof Array ? [] : {} for (let key in obj) {
o[key] = obj[key] instanceof Object ? clone3(obj[key]) : obj[key]
}
}</script>
作者:饥人谷_米弥轮
链接:https://www.jianshu.com/p/f2799d222268
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦