對 JavaScript 中的5種主要的數據類型進行值復制


定義一個函數 clone(),可以對 JavaScript 中的5種主要的數據類型(包括 Number、String、Object、Array、Boolean)進行值復制

  1. 使用 typeof 判斷值得類型;
  2. 使用 toString 區分數組和對象;
  3. 使用遞歸函數;
function clone(obj) {
    //判斷是對象,就進行循環復制
    if (typeof obj === 'object' && typeof obj !== 'null') {
        // 區分是數組還是對象,創建空的數組或對象
        var o = Object.prototype.toString.call(obj).slice(8, -1) === "Array" ? [] : {};
        for (var k in obj) {
            // 如果屬性對應的值為對象,則遞歸復制
            if(typeof obj[k] === 'object' && typeof obj[k] !== 'null'){
                o[k] = clone(obj[k])
            }else{
                o[k] = obj[k];
            }
        }
    }else{ //不為對象,直接把值返回
        return obj;
    }
    return o;
}

其中:slice(8,-1)意思是從第8位開始(包含第8位)到最后一位之前(-1的意思就是最后一位,不包含最后一位);
Object.prototype.toString.call(a)這個是用來判斷數據類型,
如果a是數字,得出的結果是[object Number],從零開始數,第8位就是N,最后一位的前一位就是r,所以取得Number;
如果a是字符串,得出結果是[object String],第8位S,最后一位的前一位g,取得String


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM