首页前端开发VUEvue深拷贝的3种实现方式小结

vue深拷贝的3种实现方式小结

时间2024-02-11 04:20:02发布访客分类VUE浏览906
导读:收集整理的这篇文章主要介绍了vue深拷贝的3种实现方式小结,觉得挺不错的,现在分享给大家,也给大家做个参考。 目录1、通过递归方式实现深拷贝2、JSON.parse(JSON.strin...
收集整理的这篇文章主要介绍了vue深拷贝的3种实现方式小结,觉得挺不错的,现在分享给大家,也给大家做个参考。
目录
  • 1、通过递归方式实现深拷贝
  • 2、JSON.parse(JSON.stringify(obj))
  • 3、jQuery的extend方法实现深拷贝
  • 拓展阅读
    • vue深拷贝的其他实现方式
  • 总结

    vue深拷贝的三种实现方式:1、通过递归方式实现深拷贝;2、JSON.parse(JSON.stringify(obj));3、jquery的extend方法实现深拷贝。深拷贝:拷贝的是对象或者数组内部数据的实体,重新开辟了内存空间存储数据;浅拷贝:拷贝的是引用类型的指针,副本和原数组或对象指向同一个内存;

    1、通过递归方式实现深拷贝

    比较全面的深拷贝,缺点是较为繁琐

    function deepClone(obj) {
    	VAR target = {
    }
        ;
    	for (var key in obj) {
    		if (Object.PRototyPE.hasOwnProperty.call(obj, key)) {
    			if (typeof obj[key] === 'object') {
        				target[key] = deepClone(obj[key]);
    			}
     else {
        				target[key] = obj[key];
    			}
    		}
    	}
        	return target;
    }
        

    2、JSON.parse(JSON.stringify(obj))

    满足一般使用场景,但无法实现对象中方法(fountion)的深拷贝

    let obj = {
    	id: 1,	name: '张三',	age: 10,}
        let newObj = JSON.parse(JSON.stringify(obj))

    3、jQuery的extend方法实现深拷贝

    var array = [1,2,3,4];
        var newArray = $.extend(true,[],array);
         // true为深拷贝,false为浅拷贝

    拓展阅读

    vue深拷贝的其他实现方式

    1、Object.assign(obj1, obj2)

    只有一级属性为深拷贝,二级属性后就是浅拷贝

    let obj = {
    	id: 1,	name: '张三',	age: 10,}
    let newObj = Object.assign({
    }
        , obj)

    2、扩展运算符

    只有一级属性为深拷贝,二级属性后就是浅拷贝

    var obj = {
        a: 1,    b: 2}
     var obj1 = {
    …obj}
        

    3、数组使用数组方法进行深拷贝(concat、slice)

    只有一级属性为深拷贝,二级属性后就是浅拷贝,如[1,2,3,[1,2,3]]

    var arr1 = [1, 2, 3, 4]var arr2 = arr1.concat()var arr3 = arr1.slice(1)

    总结

    到此这篇关于vue深拷贝的3种实现方式的文章就介绍到这了,更多相关vue深拷贝实现方式内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

    您可能感兴趣的文章:
    • vue 使用lodash实现对象数组深拷贝操作
    • vue对象复制方式(深拷贝,多层对象拷贝方式在后面)

    声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


    若转载请注明出处: vue深拷贝的3种实现方式小结
    本文地址: https://pptw.com/jishu/609311.html
    unplugin-auto-import与unplugin-vue-components安装问题解析 vue项目中解决 IOS + H5 滑动边界橡皮筋弹性效果(解决思路)

    游客 回复需填写必要信息