成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

開發(fā)中常用的JS知識點集錦

awesome23 / 2498人閱讀

摘要:索引對象深拷貝網(wǎng)絡圖片轉(zhuǎn)在線圖片點擊下載對象深拷貝對象深拷貝對象深拷貝對象深拷貝對象的深拷貝一級屬性拷貝和多級屬性嵌套拷貝深拷貝函數(shù)滿足屬性多級嵌套處理重復引用,防止死循環(huán)屬性為對象,遞歸深度復制測試對象的深拷貝大錘一級屬性深拷貝的函數(shù)特性

索引

1、對象深拷貝

2、網(wǎng)絡圖片轉(zhuǎn)base64, 在線圖片點擊下載

3、對象深拷貝

4、對象深拷貝

5、對象深拷貝

6、對象深拷貝

1、對象的深拷貝(一級屬性拷貝和多級屬性嵌套拷貝)

//深拷貝函數(shù)(滿足屬性多級嵌套)
function deepCloneObj(sourceObj){ var obj = (sourceObj instanceof Array) ? [] : {}; for (var key in sourceObj){ var tmp = sourceObj[key]; //處理重復引用,防止死循環(huán)
        if (tmp === sourceObj){ continue; 
        } if (typeof tmp === "object"){
            obj[key] = arguments.callee(tmp); //屬性為對象,遞歸深度復制
 } else{
            obj[key] = tmp;
        }
    } return obj;
} //

1、測試對象的深拷貝

var obj = {info:{name:"大錘"}, sign: "xxx"}; var obj2 = Object.assign({}, obj);  //一級屬性深拷貝 (es6的Object.assign函數(shù)特性)
var obj3 = {...obj};            //一級屬性深拷貝 (es6擴展運算符)
var obj4 =  deepCloneObj(obj);  //遞歸深拷貝所有層級屬性
var obj5 = JSON.parse(JSON.stringify(obj)); //深拷貝所有層級屬性
 console.log("obj: ", JSON.stringify(obj));
console.log("obj2: ", JSON.stringify(obj2));
console.log("obj3: ", JSON.stringify(obj3));
console.log("obj4: ", JSON.stringify(obj4));
console.log("obj5: ", JSON.stringify(obj5));
console.log(".........end..........");

setTimeout(function(){

    obj.sign = "a**b"; 
    obj.info.name = "一二三";
    console.log("
****update info ****");
    console.log("obj: ", JSON.stringify(obj));
    console.log("obj2: ", JSON.stringify(obj2));
    console.log("obj3: ", JSON.stringify(obj3));
    console.log("obj4: ", JSON.stringify(obj4));
    console.log("obj5: ", JSON.stringify(obj5));
    console.log(".........end..........");
},100); /* 打印日志結(jié)果:
obj:  {"info":{"name":"大錘"},"sign":"xxx"}
obj2:  {"info":{"name":"大錘"},"sign":"xxx"}
obj3:  {"info":{"name":"大錘"},"sign":"xxx"}
obj4:  {"info":{"name":"大錘"},"sign":"xxx"}
obj5:  {"info":{"name":"大錘"},"sign":"xxx"}
.........end..........

****update info ****
obj:  {"info":{"name":"一二三"},"sign":"a**b"}   //只拷貝了第一級屬性
obj2:  {"info":{"name":"一二三"},"sign":"xxx"}   //只拷貝了第一級屬性
obj3:  {"info":{"name":"一二三"},"sign":"xxx"}   //只拷貝了第一級屬性
obj4:  {"info":{"name":"大錘"},"sign":"xxx"}     //所有層級深拷貝
obj5:  {"info":{"name":"大錘"},"sign":"xxx"}    //所有層級深拷貝 */

//2、測試數(shù)組的深拷貝

setTimeout(function(){
    console.log("

.....數(shù)組的深拷貝測試...."); var arr = [{name: "小明"}, true, 18]; var arr2 = Object.assign([], arr); var arr3 = [...arr2]; var arr4 = deepCloneObj(arr); var arr5 = JSON.parse(JSON.stringify(arr));

    console.log("arr: ", JSON.stringify(arr));
    console.log("arr2: ", JSON.stringify(arr2));
    console.log("arr3: ", JSON.stringify(arr3));
    console.log("arr4: ", JSON.stringify(arr4));
    console.log("arr5: ", JSON.stringify(arr5));
    console.log("......end......
");

    setTimeout(function(){

        arr[0].name = "五六七", arr[1] = false, arr[2] = 99;
        console.log("arr: ", JSON.stringify(arr));
        console.log("arr2: ", JSON.stringify(arr2));
        console.log("arr3: ", JSON.stringify(arr3));
        console.log("arr4: ", JSON.stringify(arr4));
        console.log("arr5: ", JSON.stringify(arr5));

    }, 100); /* 數(shù)組測試打印日志結(jié)果:
    .....數(shù)組的深拷貝測試....
    arr:  [{"name":"小明"},true,18]
    arr2:  [{"name":"小明"},true,18]
    arr3:  [{"name":"小明"},true,18]
    arr4:  [{"name":"小明"},true,18]
    arr5:  [{"name":"小明"},true,18]
    ......end......

    arr:  [{"name":"五六七"},false,99]
    arr2:  [{"name":"五六七"},true,18]    //只拷貝了第一級屬性
    arr3:  [{"name":"五六七"},true,18]   //只拷貝了第一級屬性
    arr4:  [{"name":"小明"},true,18]    //所有層級深拷貝
    arr5:  [{"name":"小明"},true,18]   //所有層級深拷貝 */ },1000);

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108769.html

相關(guān)文章

  • 后臺開發(fā)常問面試題集錦(問題搬運工,附鏈接)

    摘要:基礎問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    spacewander 評論0 收藏0
  • 后臺開發(fā)常問面試題集錦(問題搬運工,附鏈接)

    摘要:基礎問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    xfee 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<