Js实现深拷贝的4种方式
    		       		warning:
    		            这篇文章距离上次修改已过446天,其中的内容可能已经有所变动。
    		        
        		                
                JavaScript实现深拷贝的方法有很多种,以下是四种常见的方法:
- 使用
JSON.parse和JSON.stringify: 
function deepClone(obj) {
    return JSON.parse(JSON.stringify(obj));
}- 递归拷贝:
 
function deepClone(obj) {
    if (obj === null || typeof obj !== 'object') {
        return obj;
    }
 
    if (obj instanceof Date) {
        return new Date(obj.getTime());
    }
 
    if (obj instanceof Array) {
        return obj.reduce((arr, item, i) => {
            arr[i] = deepClone(item);
            return arr;
        }, []);
    }
 
    if (obj instanceof Object) {
        return Object.keys(obj).reduce((newObj, key) => {
            newObj[key] = deepClone(obj[key]);
            return newObj;
        }, {});
    }
}- 使用
lodash的cloneDeep方法: 
const _ = require('lodash');
const clone = _.cloneDeep(value);- 使用
MessageChannel: 
function deepClone(obj) {
    const { port1, port2 } = new MessageChannel();
    port1.postMessage(obj);
    return port2.getMessage();
}这四种方法各有优缺点,选择哪种方法取决于具体的应用场景和需求。
评论已关闭