前端面試題 - 賦值/淺拷貝/深拷貝的區別?如何實現一個深拷貝?

前端面試題 - 賦值/淺拷貝/深拷貝的區別?如何實現一個深拷貝?

  • 賦值是拷貝的對象指針,整個對象都是共用的。
  • 淺拷貝是拷貝一層,對象的內容仍是共用的,Object.assign(),拓展運算符都是淺拷貝。
  • 深拷貝是遞歸拷貝深層次,JSON.stringify()是深拷貝,但是會忽略undefined、symbol和函數。
// 一個簡單的深拷貝
function clone(target) {
    if (typeof target === 'object') {
        let cloneTarget = Array.isArray(target) ? [] : {}; // 考慮數組
        for (const key in target) {
            cloneTarget[key] = clone(target[key]);
        }
        return cloneTarget;
    } else {
        return target;
    }
};

通俗易懂的前端面試題網站: https://www.front-interview.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章