Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Einführung in Shallow Copy und Deep Copy in js und wie man sie implementiert

Eine kurze Einführung in Shallow Copy und Deep Copy in js und wie man sie implementiert

不言
不言Original
2018-08-11 16:09:581847Durchsuche

Der Inhalt dieses Artikels ist eine kurze Einführung und Implementierungsmethode für flaches Kopieren und tiefes Kopieren. Ich hoffe, dass er für Sie hilfreich ist.

Erste Aussage: Welcher Datentyp kann kopiert werden? Zweifellos Arrays und Objekte [Array&Object]

Flache Kopie:

* --- Methode zum Kopieren von Daten (betrifft die Originaldaten durch flache Kopie)
* 1. Direkt in die Variable kopieren // Flache Kopie
* 2. Object.assign() // Flache Kopie des Objekts
* 3. Array.prototype.concat() // Flache Kopie des Arrays
* 4. Array.prototype.slice() //Array flache Kopie

Tiefe Kopie:

Methode 1:

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

Methode 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;
}

Verwandte Empfehlungen:

jQuerys $.extend Shallow Copy- und Deep Copy-Beispielanalyse

JS-Implementierung von Deep- und Shallow-Copy-Methoden

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in Shallow Copy und Deep Copy in js und wie man sie implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn