Maison > interface Web > js tutoriel > le corps du texte

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

不言
Libérer: 2018-08-11 16:09:58
original
1791 Les gens l'ont consulté

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));
}
Copier après la connexion

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;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!