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

資訊專(zhuān)欄INFORMATION COLUMN

js實(shí)現(xiàn)clone方法對(duì)各種數(shù)據(jù)類(lèi)型進(jìn)行復(fù)制

CoffeX / 2838人閱讀

摘要:對(duì)各種數(shù)據(jù)類(lèi)型進(jìn)行復(fù)制,最初的思想是利用判別數(shù)據(jù)類(lèi)型后利用語(yǔ)句分別賦值,但是有個(gè)問(wèn)題和返回的都是,所以又要細(xì)分為三種情況編寫(xiě)代碼。其中,要判斷一個(gè)對(duì)象為數(shù)組使用的是方法。

對(duì)各種數(shù)據(jù)類(lèi)型進(jìn)行復(fù)制,最初的思想是利用typeof判別數(shù)據(jù)類(lèi)型后利用switch語(yǔ)句分別賦值,但是有個(gè)問(wèn)題:null、Array和Object返回的都是‘object’,所以又要細(xì)分為三種情況編寫(xiě)代碼。其中,要判斷一個(gè)對(duì)象為數(shù)組使用的是:toString.apply(obj)方法。完整代碼如下:

function clone(obj){
            var copy;
            switch(typeof obj){
                case "undefined":break;
                case "number":
                case "string":
                case "boolean":copy = obj;break;
                case "object":
                    if(obj == null) copy = null;
                    else if(toString.apply(obj) === "[object Array]")
                    {
                        copy = [];
                        for(var i in obj) copy.push(clone(obj[i]));
                    }
                    else 
                    {
                        copy = {};
                        for(var j in obj)
                            copy[j]= clone(obj[j]);
                    }
            }
            return copy;
        }
        console.log(clone(true));
        console.log(clone(12));
        console.log(clone("abc"));
        console.log(clone(null));
        console.log(clone([1,2,3]));
        console.log(clone({name:"zh",age:"18"}));

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

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

相關(guān)文章

  • JS的深淺拷貝

    摘要:引用類(lèi)型之所以會(huì)出現(xiàn)深淺拷貝的問(wèn)題,實(shí)質(zhì)上是由于對(duì)基本類(lèi)型和引用類(lèi)型的處理不同。另外方法可以視為數(shù)組對(duì)象的淺拷貝。上面描述過(guò)的復(fù)雜問(wèn)題依然存在,可以說(shuō)是最簡(jiǎn)陋但是日常工作夠用的深拷貝方式。 一直想梳理下工作中經(jīng)常會(huì)用到的深拷貝的內(nèi)容,然而遍覽了許多的文章,卻發(fā)現(xiàn)對(duì)深拷貝并沒(méi)有一個(gè)通用的完美實(shí)現(xiàn)方式。因?yàn)閷?duì)深拷貝的定義不同,實(shí)現(xiàn)時(shí)的edge case過(guò)多,在深拷貝的時(shí)候會(huì)出現(xiàn)循環(huán)引用等問(wèn)...

    xiaoxiaozi 評(píng)論0 收藏0
  • 深入剖析 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è)人博客:咀嚼之味 一年前我曾寫(xiě)過(guò)一篇 Javascript 中的一種深復(fù)制實(shí)現(xiàn),當(dāng)時(shí)寫(xiě)這篇文章的時(shí)候還比較稚嫩,有很多地方?jīng)]有考慮仔細(xì)。...

    gclove 評(píng)論0 收藏0
  • JavaScript之深入各種繼承

    摘要:通常有這兩種繼承方式接口繼承和實(shí)現(xiàn)繼承。理解繼承的工作是通過(guò)調(diào)用函數(shù)實(shí)現(xiàn)的,所以是寄生,將繼承工作寄托給別人做,自己只是做增強(qiáng)工作。適用基于某個(gè)對(duì)象或某些信息來(lái)創(chuàng)建對(duì)象,而不考慮自定義類(lèi)型和構(gòu)造函數(shù)。 一、繼承的概念 繼承,是面向?qū)ο笳Z(yǔ)言的一個(gè)重要概念。通常有這兩種繼承方式:接口繼承和實(shí)現(xiàn)繼承。接口繼承只繼承方法簽名,而實(shí)現(xiàn)繼承則繼承實(shí)際的方法。 《JS高程》里提到:由于函數(shù)沒(méi)有簽名,...

    tomlingtm 評(píng)論0 收藏0
  • 復(fù)習(xí)Javascript專(zhuān)題(四):js中的深淺拷貝

    摘要:基本數(shù)據(jù)類(lèi)型的復(fù)制很簡(jiǎn)單,就是賦值操作,所以深淺拷貝也是針對(duì),這類(lèi)引用類(lèi)型數(shù)據(jù)。它會(huì)拋棄對(duì)象的。另外,查資料過(guò)程中還看到這么一個(gè)詞結(jié)構(gòu)化克隆算法還有這一篇資料也有參考,也寫(xiě)得比較詳細(xì)了的深淺拷貝 基本數(shù)據(jù)類(lèi)型的復(fù)制很簡(jiǎn)單,就是賦值操作,所以深淺拷貝也是針對(duì)Object,Array這類(lèi)引用類(lèi)型數(shù)據(jù)。 淺拷貝對(duì)于字符串來(lái)說(shuō),是值的復(fù)制,而對(duì)于對(duì)象來(lái)說(shuō)則是對(duì)對(duì)象地址的復(fù)制;而深拷貝的話,它不...

    MobService 評(píng)論0 收藏0
  • JS實(shí)用技巧】?jī)?yōu)化動(dòng)態(tài)創(chuàng)建元素的方式,讓代碼更加優(yōu)雅且利于維護(hù)

    摘要:更好的方案模板分離原則模板分離原則將定義模板的那一部分,與的代碼邏輯分離開(kāi)來(lái),讓代碼更加優(yōu)雅且利于維護(hù)。 showImg(https://segmentfault.com/img/bVJ73t?w=800&h=316); 引言 在前端開(kāi)發(fā)中,經(jīng)常需要?jiǎng)討B(tài)添加一些元素到頁(yè)面上。那么如何通過(guò)一些技巧,優(yōu)化動(dòng)態(tài)創(chuàng)建頁(yè)面元素的方式,使得代碼更加優(yōu)雅,并且更易于維護(hù)呢?接下來(lái)我們通過(guò)研究一些實(shí)例...

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

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

0條評(píng)論

閱讀需要支付1元查看
<