js的深浅拷贝
js數據類型包括5種簡單數據類型(或者基本數據類型):Undefined, Null, Number, String, Boolean, 指的是保存在棧內存中的簡單數據段。還有一種復雜數據類型(引用數據類型):Object Function Array,指的是那些保存在堆內存中的對象。
深淺拷貝只是針對Object,Array這樣的復雜對象。javascript存儲對象都是存地址。
對象:
淺拷貝只是針對對象的各個屬性進行一次復制,復制前后兩個屬性指向的還是同一塊內存地址
深拷貝不僅對各個屬性進行逐一復制,而且將各個屬性包含的對象也采用深復制的方法遞歸到新的對象上。
var deepCopy = function (source) {
var result = {}
for (var key in source) {
result[key] = typeof source[key] === 'object' ? deepCopy(source[key]) : source[key];
}
return result;
}
如果對象層級比較多,比較大,深復制會帶來性能上的問題,在遇到深復制的場景,可以考慮有沒有其他替代的方案。實際的場景中,淺拷貝更為常用。
?
數組:
淺拷貝直接將數據復給一個變量,復制前后兩個數組指向的是內存中同一塊區域
深拷貝則是將數組的內容逐一拷貝過來
方法:
遍歷復制
slice利用slice函數返回新數組
轉載于:https://www.cnblogs.com/caihe/p/6855687.html
總結
- 上一篇: 用Anko和Kotlin实现Androi
- 下一篇: 安全测试中常见的术语