真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

javascript深拷貝的方法有哪些-創(chuàng)新互聯(lián)

1、將對象轉(zhuǎn)換為JSON字符串形式,再將其轉(zhuǎn)換為原生JS對象;

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機(jī)域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、大通網(wǎng)站維護(hù)、網(wǎng)站推廣。
//_tmp和result是相互獨立的,沒有任何聯(lián)系,有各自的存儲空間。
let deepClone = function (obj) {
    let _tmp = JSON.stringify(obj);//將對象轉(zhuǎn)換為json字符串形式
    let result = JSON.parse(_tmp);//將轉(zhuǎn)換而來的字符串轉(zhuǎn)換為原生js對象
    return result;
};

let obj1 = {
    weiqiujaun: {
        age: 20,
        class: 1502
    },
    liuxiaotian: {
        age: 21,
        class: 1501
    }
};

let test = deepClone(obj1);
console.log(test);

2、使用JS中的for循環(huán)實現(xiàn)遍歷和復(fù)制;

function deepClone(obj) {
    let result = typeof  obj.splice === "function" ? [] : {};
    if (obj && typeof obj === 'object') {
        for (let key in obj) {
            if (obj[key] && typeof obj[key] === 'object') {
                result[key] = deepClone(obj[key]);//如果對象的屬性值為object的時候,遞歸調(diào)用deepClone,即在吧某個值對象復(fù)制一份到新的對象的對應(yīng)值中。
            } else {
                result[key] = obj[key];//如果對象的屬性值不為object的時候,直接復(fù)制參數(shù)對象的每一個鍵值到新的對象對應(yīng)的鍵值對中。
            }

        }
        return result;
    }
    return obj;
}

let testArray = ["a", "b", "c", "d"];
let testRes = deepClone(testArray);
console.log(testRes);
console.log(typeof testRes[1]);

let testObj = {
    name: "weiqiujuan",
    sex: "girl",
    age: 22,
    favorite: "play",
    family: {brother: "son", mother: "haha", father: "heihei"}
};
let testRes2 = deepClone(testObj);
testRes2.family.brother = "weibo";
console.log(testRes2);

3、利用數(shù)組的“Array.prototype.forEach”方法進(jìn)行復(fù)制即可實現(xiàn)深拷貝。

let deepClone = function (obj) {
    let copy = Object.create(Object.getPrototypeOf(obj));
    let propNames = Object.getOwnPropertyNames(obj);
    propNames.forEach(function (items) {
        let item = Object.getOwnPropertyDescriptor(obj, items);
        Object.defineProperty(copy, items, item);

    });
    return copy;
};

let testObj = {
    name: "weiqiujuan",
    sex: "girl",
    age: 22,
    favorite: "play",
    family: {brother: "wei", mother: "haha", father: "heihei"}
}
let testRes2 = deepClone(testObj);
console.log(testRes2);

以上就是JS 深拷貝的三種實現(xiàn)方式的詳細(xì)內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!


分享文章:javascript深拷貝的方法有哪些-創(chuàng)新互聯(lián)
URL分享:http://weahome.cn/article/ddspjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部