Maison  >  Article  >  interface Web  >  Une brève introduction à la copie superficielle et à la copie profonde dans js et comment les implémenter

Une brève introduction à la copie superficielle et à la copie profonde dans js et comment les implémenter

不言
不言original
2018-08-11 16:09:581847parcourir

Le contenu de cet article est une brève introduction et une méthode de mise en œuvre de la copie superficielle et de la copie profonde en js. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Première affirmation : quel type de données peut être copié ? Sans aucun doute, des tableaux et des objets [Array&Object]

Copie superficielle :

* --- Méthode de copie des données (affectant les données originales est une copie superficielle)
* 1. Copier directement dans la variable // Copie superficielle
* 2. Object.assign() // Copie superficielle de l'objet
* 3. Array.prototype.concat() // Copie superficielle du tableau
* 4. Array.prototype.slice() //Copie superficielle du tableau

Copie profonde :

Méthode 1 :

//无嵌套对象或者数组浅拷贝
function simpleDeepClone(target){
       return JSON.parse(JSON.stringify(target));
}

Méthode 2 :

//嵌套对象或者数组深拷贝
//定义检测数据类型的函数
function checkType(target) {
    return Object.prototype.toString.call(target).slice(8, -1);
}

//实现深度拷贝
function clone(target) {
    //判断拷贝的数据类型
    let result, targetType = checkType(target);
    if (targetType === 'Object') {
        result = {};
    } else if (targetType === 'Array') {
        result = [];
    } else {
        return target;
    }
    //遍历目标数据
    for (let i in target) {
        //获取数据对象的每一个值
        let value = target[i];
        //判断目标结构里面是否存在对象/数组
        if (checkType(value) === 'Object' || checkType(value) === 'Array') {
            //继续遍历
            result[i] = clone(value);
        } else { //获取到的value值是基本的数据类型或者函数
            result[i] = value;
        }
    }
    return result;
}

Recommandations associées :

Exemple de copie superficielle et de copie profonde $.extend de jQuery analyse

JS implémente la méthode de copie profonde et superficielle

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn