获取对象类型
function getType(obj){//tostring会返回对应不同的标签的构造函数var toString = Object.prototype.toString;var map = {'[object Boolean]' : 'boolean','[object Number]' : 'number','[object String]' : 'string','[object Function]' : 'function','[object Array]' : 'array','[object Date]' : 'date','[object RegExp]' : 'regExp','[object Undefined]': 'undefined','[object Null]' : 'null','[object Object]' : 'object'};if(obj instanceof Element) {return 'element';}return map[toString.call(obj)];}//深拷贝的方法function deepClone(data){var type = getType(data);var obj;if(type === 'array'){obj = [];} else if(type === 'object'){obj = {};} else {//不再具有下一层次return data;}if(type === 'array'){for(var i = 0, len = data.length; i < len; i++){obj.push(deepClone(data[i]));}} else if(type === 'object'){for(var key in data){obj[key] = deepClone(data[key]);}}return obj;}//对象1var obj1={age:10,sex:"男",car:["奔驰","宝马","特斯拉","奥拓"],dog:{name:"大黄",age:5,color:"黑白色"}};//对象2 : 实现深拷贝var obj2 = {};for(var key in obj1){obj2[key] = deepClone(obj1[key])}console.log(obj2);

