国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

對(duì)象的深復(fù)制

elva / 3131人閱讀

摘要:異同淺復(fù)制影子克隆只復(fù)制對(duì)象的基本類型對(duì)象類型仍屬于原來(lái)的引用。深復(fù)制深度克隆不緊復(fù)制對(duì)象的基本類同時(shí)也復(fù)制原對(duì)象中的對(duì)象。就是說(shuō)完全是新對(duì)象產(chǎn)生的。注意事項(xiàng)直接在上實(shí)現(xiàn)該方法的好處是,所有對(duì)象都會(huì)繼承該方法。

異同:

淺復(fù)制 (影子克隆): 只復(fù)制對(duì)象的基本類型, 對(duì)象類型, 仍屬于原來(lái)的引用。
深復(fù)制 (深度克隆): 不緊復(fù)制對(duì)象的基本類, 同時(shí)也復(fù)制原對(duì)象中的對(duì)象。就是說(shuō)完全是新對(duì)象產(chǎn)生的。

思路:

遍歷所有該對(duì)象的屬性,
如果該屬性是 "object" 則需要特殊處理,
如果這個(gè) object 對(duì)象比較特殊,是一個(gè)數(shù)組,那就創(chuàng)建一個(gè)新的數(shù)組并深復(fù)制數(shù)組里的元素
如果這個(gè) object 對(duì)象是個(gè)非數(shù)組對(duì)象,那直接再對(duì)它遞歸調(diào)用深復(fù)制方法即可。
如果不是 "object",則直接正常復(fù)制就行。

注意事項(xiàng):

直接在 Object.prototype 上實(shí)現(xiàn)該方法的好處是,所有對(duì)象都會(huì)繼承該方法。壞處是某些庫(kù)也會(huì)改寫 Object 對(duì)
象,所以有時(shí)會(huì)發(fā)生沖突。這是需要注意的。

代碼:
Object.prototype.deepCopy=function(){
    var obj={};//用于最后返回一個(gè)對(duì)象,這個(gè)對(duì)象是深復(fù)制的結(jié)果
    for(var attr in this){//遍歷這個(gè)對(duì)象的每一個(gè)屬性
        if(this.hasOwnProperty(attr)){//主要是遞歸自有屬性
            if(typeof (this[attr]==="object")){//如果對(duì)象的屬性是一個(gè)對(duì)象,就遞歸復(fù)制它的每一個(gè)屬性
                if(this[attr]===null){//如果對(duì)象為null
                    obj[attr]=null;
                }else if(Object.prototype.toString(this[attr])==="[object Array]"){//如果是個(gè)數(shù)組
                    obj[attr]=[];
                    for(var i=0;i

ES6 版本

function deepCopy(obj){
    if(typeof obj === "object"){
        if(obj === null){
            return null;
        }
        let result = {};
        const keys = Object.keys(obj);
        const length = keys.length;
        for(let i=0;i           
               
                                           
                       
                 

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/80817.html

相關(guān)文章

  • 深入剖析 JavaScript 的深復(fù)制

    摘要:的不能算作深復(fù)制,但它至少比直接賦值來(lái)得深一些,它創(chuàng)建了一個(gè)新的對(duì)象。它們的主要用途是對(duì)存在環(huán)的對(duì)象進(jìn)行深復(fù)制。比如源對(duì)象中的子對(duì)象在深復(fù)制以后,對(duì)應(yīng)于。希望這篇文章對(duì)你們有幫助深復(fù)制方法所謂擁抱未來(lái)的深復(fù)制實(shí)現(xiàn)參考資料 本文最初發(fā)布于我的個(gè)人博客:咀嚼之味 一年前我曾寫過(guò)一篇 Javascript 中的一種深復(fù)制實(shí)現(xiàn),當(dāng)時(shí)寫這篇文章的時(shí)候還比較稚嫩,有很多地方?jīng)]有考慮仔細(xì)。...

    gclove 評(píng)論0 收藏0
  • JS 中的深拷貝與淺拷貝

    摘要:什么是深拷貝淺拷貝見(jiàn)名知義,無(wú)論是深拷貝還是淺拷貝,都是的問(wèn)題。使用如下以上就是關(guān)于中的深拷貝與淺拷貝的知識(shí)和如何進(jìn)行深拷貝的知識(shí)了,如果有錯(cuò)或者有其他方式的話,歡迎在下面留言評(píng)論啦 前言 最近在寫項(xiàng)目的時(shí)候涉及到一些父子組件傳遞個(gè)對(duì)象或者數(shù)組通信啥的,或者是直接復(fù)制添加對(duì)象啥的,直接使用賦值的時(shí)候總會(huì)出錯(cuò)。一查原來(lái)是淺拷貝的問(wèn)題,就從網(wǎng)上找了點(diǎn)資料,匯總到這里來(lái)了。 1 什么是深拷貝...

    ztyzz 評(píng)論0 收藏0
  • 在js中的深復(fù)制實(shí)現(xiàn)方法

    摘要:針對(duì)本話題,我在年月發(fā)布了新的文章深入剖析的深復(fù)制要實(shí)現(xiàn)深復(fù)制有很多辦法,比如最簡(jiǎn)單的辦法有上面這種方法好處是非常簡(jiǎn)單易用,但是壞處也顯而易見(jiàn),這會(huì)拋棄對(duì)象的,也就是深復(fù)制之后,無(wú)論這個(gè)對(duì)象原本的構(gòu)造函數(shù)是什么,在深復(fù)制之后都會(huì)變成。 針對(duì)本話題,我在2015年5月發(fā)布了新的文章:深入剖析 JavaScript 的深復(fù)制 要實(shí)現(xiàn)深復(fù)制有很多辦法,比如最簡(jiǎn)單的辦法有: var...

    Alliot 評(píng)論0 收藏0
  • Javascript中的深復(fù)制

    摘要:對(duì)一個(gè)對(duì)象或者數(shù)組這種引用類型的值進(jìn)行復(fù)制可以分為淺復(fù)制和深復(fù)制,比如這樣的一個(gè)對(duì)象很明顯這個(gè)對(duì)象是存在兩層的,不是基本類型值,而是另一個(gè)對(duì)象。上面講的就是淺復(fù)制,在實(shí)際應(yīng)用中存在很嚴(yán)重的問(wèn)題。基于的做法是這樣的淺復(fù)制深復(fù)制 對(duì)一個(gè)對(duì)象或者數(shù)組這種引用類型的值進(jìn)行復(fù)制可以分為淺復(fù)制和深復(fù)制,比如這樣的一個(gè)對(duì)象 let obj={ a:1, b:{ a:1...

    104828720 評(píng)論0 收藏0
  • Javascript中的深復(fù)制

    摘要:對(duì)一個(gè)對(duì)象或者數(shù)組這種引用類型的值進(jìn)行復(fù)制可以分為淺復(fù)制和深復(fù)制,比如這樣的一個(gè)對(duì)象很明顯這個(gè)對(duì)象是存在兩層的,不是基本類型值,而是另一個(gè)對(duì)象。上面講的就是淺復(fù)制,在實(shí)際應(yīng)用中存在很嚴(yán)重的問(wèn)題。基于的做法是這樣的淺復(fù)制深復(fù)制 對(duì)一個(gè)對(duì)象或者數(shù)組這種引用類型的值進(jìn)行復(fù)制可以分為淺復(fù)制和深復(fù)制,比如這樣的一個(gè)對(duì)象 let obj={ a:1, b:{ a:1...

    Lin_YT 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<