新濠天地深度拷贝_新濠天地网 新濠天地深度拷贝_新濠天地网

新濠天地网

新濠天地深度拷贝

6月以前  |  官网数:92 次  |    

//JSON.stringify深度克隆新濠天地;
//新濠天地网 无法对新濠天地 、RegExp等特殊新濠天地的克隆;
//新濠天地网 会抛弃新濠天地的constructor,所有的构造新濠天地会指向Object;
//3.新濠天地有循环引用,会报错
const objDeepClone = obj = > {
return clone(obj)
}
const isType = (obj, type) = > {
if (typeof obj !== 'object') return false;
// 判断数据新濠天地的经典方法:
const typeString = Object.prototype.toString.call(obj);
let flag;
switch (type) {
case 'Array':
flag = typeString === '[object Array]';
break;
case 'Date':
flag = typeString === '[object Date]';
break;
case 'RegExp':
flag = typeString === '[object RegExp]';
break;
default:
flag = false;
}
return flag;
};
/**
* deep clone
* @param {[type]} parent object 需要进行克隆的新濠天地
* @return {[type]} 深克隆后的新濠天地
*/
const clone = parent = > {
// 维护两个储存循环引用的数组
const parents = []
const children = []
const _clone = parent = > {
if (parent === null) return null
if (typeof parent !== 'object') return parent
let child, proto
if (isType(parent, 'Array')) {
// 对数组做特殊处理
child = []
} else if (isType(parent, 'RegExp')) {
// 对正则新濠天地做特殊处理
child = new RegExp(parent.source, getRegExp(parent))
if (parent.lastIndex) child.lastIndex = parent.lastIndex
} else if (isType(parent, 'Date')) {
// 对Date新濠天地做特殊处理
child = new Date(parent.getTime())
} else {
// 处理新濠天地原型
proto = Object.getPrototypeOf(parent)
// 利用Object.create切断原型链
child = Object.create(proto)
}
// 处理循环引用
const index = parents.indexOf(parent)
if (index !== -1) {
// 如果父数组存在本新濠天地说明之前已经被引用过,直接关注此新濠天地
return children[index]
}
parents.push(parent)
children.push(child)
for (const i in parent) {
// 递归
child[i] = _clone(parent[i])
}
return child
}
return _clone(parent)
}
console.log(objDeepClone({
name: '张三',
age: 23,
obj: {
name: '李四',
age: 46
},
arr: [1, 2, 3]
})) // { name: '张三', age: 23, obj: { name: '李四', age: 46 }, arr:[ 1, 2, 3 ] }

相关新濠天地:


SSH 登录失败:Host key verification failed

PHP分页新濠天地制作新濠天地讲解

将二进制数据转为16进制以便新濠天地

PHP自定义新濠天地获取搜索引擎来源关键字的方法

获取IMSI

Java生成UUID

在Zeus Web Server中安装PHP语言支持

让你成为最历害的git提交人

获取IMEI

再谈PHP中单双引号的区别详解

Python 2与Python 3版本和编码的对比

PHP实现简单爬虫的方法

php+ajax+json 详解及实例app

wget使用技巧

php封装的page分页类完整实例

php实现数组中索引关联数据转换成json新濠天地的方法

php数组合并array_merge()新濠天地使用注意事项

桌面中心(一)创建数据库

PHP设计模式之工厂模式与单例模式

Yii2汉字转拼音类的实例app
qy77千亿国际富爸爸娱乐官网qy77千亿国际