深度对象拷贝
function deep(obj) { var objStack = []; var isPlainObject = function (o) { return Object.prototype.toString.call(o) === '[object Object]'; }; var isArray = function (o) { return Object.prototype.toString.call(o) === '[object Array]'; }; var isError = function (o) { return o instanceof Error; }; function _deepClone(obj) { var newObj, cloneObj; if (isArray(obj) || isPlainObject(obj)) { // 对象重复引用 if (objStack.indexOf(obj) === -1) { objStack.push(obj); } else { return new Error('parameter Error. it is exits loop reference'); } } if (isArray(obj)) { newObj = []; for (var i = 0, len = obj.length; i < len; i++) { cloneObj = _deepClone(obj[i]); if (!isError(cloneObj)) { newObj.push(cloneObj); } } } else if (isPlainObject(obj)) { newObj = {}; for (var key in obj) { cloneObj = _deepClone(obj[key]); if (!isError(cloneObj)) { newObj[key] = cloneObj; } } } else { newObj = obj; } return newObj; } return _deepClone(obj); }
相关推荐
-
util.js javascript
2019-1-7
-
指定html转换成pdf javascript
2019-1-7
-
js禁止微信浏览器下拉显示黑底查看网址 javascript
2019-1-8
-
短信验证码js javascript
2019-1-7
-
html5本地缓存 javascript
2019-1-7
-
前端常用js脚本 javascript
2019-1-8
-
无缝轮播 javascript
2019-1-8
-
js 框架封装(可直接使用——不依赖jquery) javascript
2019-1-8
-
网页定时刷新 javascript
2019-1-8
-
验证码倒计时js javascript
2019-1-8