美文网首页
浅拷贝&深拷贝(如何实现深拷贝)

浅拷贝&深拷贝(如何实现深拷贝)

作者: q_小也_p | 来源:发表于2021-11-30 11:07 被阅读0次

js的数据类型

主要分两大类:基本数据类型和引用数据类型。

基本数据类型有:

Srting/Number/Null/undefine/Boolean  占用内存大小确定,保存在栈内。

引用数据类型:

Object/Array  占用内存大小不确定,保存在堆内。

深拷贝的方法

1. JSON.parse(JSON.stringify(obj))

比较日常又比较dirty的方法,适合json可以解读的数据

2.利用lodash里的_.cloneDeep

import  "_" from lodash;

let obj = {name:'zs',age:12};

let obj2 = _.cloneDeep(obj);

obj2.name = 'ls'

console.log(obj,ojb1)

//{name:'zs',age:12},{name:'ls',age:12}

3.jQuery —— $.clone() / $.extend()

4.实现一个深拷贝的方法

function deepCopy (obj) {

 var result;

 //引用类型分数组和对象分别递归

 if (Object.prototype.toString.call(obj) == '[object Array]') {

 result = []

 for (i = 0; i < obj.length; i++) {

 result[i] = deepCopy(obj[i])

 }

 } else if (Object.prototype.toString.call(obj) == '[object Object]') {

 result = {}

 for (var attr in obj) {

 result[attr] = deepCopy(obj[attr])

 }

 }

 //值类型直接返回

 else {

 return obj

 }

 return result

}

相关文章

  • 深拷贝、浅拷贝

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝...

  • 面试题整理

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝...

  • 面试 (一) : 基础篇

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。• 深拷贝同浅拷贝的区别:浅拷...

  • 基础

    1、父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅...

  • 常见的面试(一)

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。• 深拷贝同浅拷贝的区别:浅拷...

  • iOS基础知识点(网络摘抄)

    1.父类实现深拷贝时,子类如何实现深拷贝。父类没有实现深拷贝时,子类如何实现深拷贝? 深拷贝同浅拷贝的区别:...

  • 五、面试总结(五)

    对象 拷贝(clone) 如何实现对象克隆 深拷贝和浅拷贝区别 深拷贝和浅拷贝如何实现激活机制 写clone()方...

  • iOS面试基础一

    #父类实现深拷贝时,子类如何实现深度拷贝.父类没有实现深拷贝时,子类如何实现深度拷贝.# <(1)深拷贝同浅拷贝的...

  • 0. iOS面试题基础篇

    1. 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 1.1 深拷贝同浅拷贝...

  • iOS基础知识点01

    1. 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 1.1 深拷贝同浅拷贝...

网友评论

      本文标题:浅拷贝&深拷贝(如何实现深拷贝)

      本文链接:https://www.haomeiwen.com/subject/biclxrtx.html