深度克隆函数:
function deepClone(obj){ var str = ""; var newobj = obj.constructor === Array ? [] : {};//通过其构造器判断克隆对象还是数组 if(typeof obj !== 'object'){//判断数据类型 return obj; } else if(window.JSON){//判断用户浏览器是否支持ES6语法 //ES6语法 str = JSON.stringify(obj), //序列化对象 newobj = JSON.parse(str); //序列化还原对象 } else {//如果不支持ES6语法 for(var i in obj){ newobj[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i]; } } return newobj; }
缺点:不兼容克隆包装类(如果浏览器支持ES6语法,函数将会把包装类返回为基本数据类型,若不支持ES6语法,则发生克隆错误)