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

資訊專欄INFORMATION COLUMN

一道關(guān)于javascript數(shù)據(jù)類型題目的思考

ralap / 3294人閱讀

摘要:感覺這個題目涉及的基礎(chǔ)知識內(nèi)容比較多,故分享出來,后面會詳細(xì)介紹數(shù)據(jù)類型的文章,歡迎關(guān)注。實現(xiàn)一個函數(shù),可以對中的種主要的數(shù)據(jù)類型包括進行值復(fù)制。

感覺這個題目涉及的基礎(chǔ)知識內(nèi)容比較多,故分享出來,后面會詳細(xì)介紹數(shù)據(jù)類型的文章,歡迎關(guān)注。

實現(xiàn)一個函數(shù)clone,可以對JavaScript中的5種主要的數(shù)據(jù)類型(包括Number、String、Object、Array、Boolean)進行值復(fù)制。

  /**
 * 對象克隆
 * 支持基本數(shù)據(jù)類型及對象
 * 遞歸方法
 */
function clone(obj) {
    var o;
    switch (typeof obj) {
        case "undefined":
            break;
        case "string":
            o = obj + "";
            break;
        case "number":
            o = obj - 0;
            break;
        case "boolean":
            o = obj;
            break;
        case "object": // object 分為兩種情況 對象(Object)或數(shù)組(Array)
            if (obj === null) {
                o = null;
            } else {
                if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") {
                    o = [];
                    for (var i = 0; i  obj.length; i++) {
                        o.push(clone(obj[i]));
                    }
                } else {
                    o = {};
                    for (var k in obj) {
                        o[k] = clone(obj[k]);
                    }
                }
            }
            break;
        default:
            o = obj;
            break;
    }
    return o;
}

如果你有高級前端的水平,這個時候就應(yīng)該寫出下面的代碼

Object.prototype.clone = function(){

            var o = this.constructor === Array ? [] : {};

            for(var e in this){

                    o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];

            }

            return o;
    }

基礎(chǔ)知識還需要牢固,要不怎么能寫出這樣高端的寫法呢?哈哈?

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

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

相關(guān)文章

  • 一道前端面試題引發(fā)思考

    摘要:直接開始題目是厲害了說句實話開發(fā)中誰寫成這樣保證會被打死。不過面試就是面試,有面試官的考量點。官方是這么說的。結(jié)果完美,不過小姐姐的意思是數(shù)組的方法會自動觸發(fā)數(shù)組的。 直接開始題目是 if(a==1 && a==2 && a==3){ alert(厲害了) } 說句實話開發(fā)中誰寫成這樣保證會被打死。 不過面試就是面試,有面試官的考量點。 我理解的點有兩個 1、隱式類型轉(zhuǎn)換 先說...

    gaomysion 評論0 收藏0
  • 前端_JavaScript

    摘要:為此決定自研一個富文本編輯器。例如當(dāng)要轉(zhuǎn)化的對象有環(huán)存在時子節(jié)點屬性賦值了父節(jié)點的引用,為了關(guān)于函數(shù)式編程的思考作者李英杰,美團金融前端團隊成員。只有正確使用作用域,才能使用優(yōu)秀的設(shè)計模式,幫助你規(guī)避副作用。 JavaScript 專題之惰性函數(shù) JavaScript 專題系列第十五篇,講解惰性函數(shù) 需求 我們現(xiàn)在需要寫一個 foo 函數(shù),這個函數(shù)返回首次調(diào)用時的 Date 對象,注意...

    Benedict Evans 評論0 收藏0
  • 一道JS試題引發(fā)思考

    摘要:也給當(dāng)初出入迷宮的我不小考驗,一道題目可以引發(fā)許多思考,今天寫下的只是今時今日的想法,到未來也許還有別樣的看法。對于回調(diào)函數(shù),可以對其傳入三個參數(shù)分別是當(dāng)前元素,元素索引,調(diào)用的數(shù)組。 [1,2,3].map(parseInt) 這道JS題目,相信大家并不會陌生。也給當(dāng)初出入JS迷宮的我不小考驗,一道題目可以引發(fā)許多思考,今天寫下的只是今時今日的想法,到未來也許還有別樣的看法。...

    xiao7cn 評論0 收藏0
  • 一道小小題目引發(fā)對javascript支持正則表達式相關(guān)方法探討

    摘要:返回值返回值根據(jù)傳入的參數(shù)類型和規(guī)則的不同,返回的內(nèi)容不同,但總體來說,它是返回一個對象,而不是索引,如果沒匹配到任何符合條件的字符串,則返回。 本文發(fā)布在我的博客一道小小的題目引發(fā)對javascript支持正則表達式相關(guān)方法的探討許可協(xié)議: 署名-非商業(yè)性使用-禁止演繹 4.0 國際 轉(zhuǎn)載請保留原文鏈接及作者。 以前對于正則是非常懼怕的,因為看不懂和學(xué)不會。但最近項目中頻繁的...

    Scholer 評論0 收藏0
  • 一道有價值JS繼承面試題

    摘要:題目原題目來源于一個網(wǎng)友的問答補充代碼我有個我有個分析題目希望生成一個新的構(gòu)造函數(shù),繼承于。盡量不要更改題目表達出希望有方法實現(xiàn)構(gòu)造函數(shù)繼承,又需要原型繼承。的指向顯然要改成指向子類構(gòu)造函數(shù)中的。 題目 原題目來源于一個網(wǎng)友的問答 var A = function() { this.name = apple; } A.prototype.getName = function()...

    darkbug 評論0 收藏0

發(fā)表評論

0條評論

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