vue深拷贝的实现方法有哪些

开发技术 作者:iii 2024-04-22 01:50:01
这篇文章主要讲解了“vue深拷贝的实现方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue深拷贝...

这篇文章主要讲解了“vue深拷贝的实现方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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深拷贝的实现方法有哪些”的内容了,经过本文的学习后,相信大家对vue深拷贝的实现方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是捷杰建站,小编将为大家推送更多相关知识点的文章,欢迎关注!

    原创声明
    本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    本文链接:http://www.jiecseo.com/news/show_15546.html
    vue