各种数据类型的复制

来源:互联网 发布:淘宝名字大全霸气男人 编辑:程序博客网 时间:2024/06/06 04:14
function clone(obj) {    var cloneObj;    switch (typeof obj){        case "undefined" :            break;        case "string" :        case "number" :        case "boolean" :            cloneObj = obj;            break;        case "object" :            if(obj == null) cloneObj = null;            else if(Object.prototype.toString.call(obj) === "[object Object]"){                cloneObj = {};                for(var key in obj){                    cloneObj[key] = clone(obj[key])                }            }            else if(Object.prototype.toString.call(obj) === "[object Array]"){                cloneObj = [];                for(var i=0 ; i<obj.length ; i++){                    cloneObj.push(obj[i])                }            }            break;    }    return cloneObj;}

这个问题主要要考虑到基本数据类型和引用数据类型,基本数据类型可以直接赋值进行复制,引用数据类型则不能直接赋值复制,需要判断引用数据类型是null、Object、Array中的哪一种,然后进行遍历复制。

Object.prototype.toString方法详解这里,注意:此toString不同于彼toString(),前面的没有括号哟!!

Object.prototype.toString也可以直接用toString代替

回头看过来,才发现为什么不直接用 Object.prototype.toString 方法呢?不用像上面那么麻烦,可以直接用一个方法做判断就好。