当前位置: 首页 > news >正文

东莞虎门高铁站域名解析ip地址查询

东莞虎门高铁站,域名解析ip地址查询,net网站开发 介绍,纯静态网站部署服务器通过递归可以简单实现对象的深拷贝,但是这种方法不管是 ES6 还是 ES5 实现,都有同样的缺陷,就是只能实现特定的 object 的深度复制(比如数组和函数),不能实现包装对象 Number,String &#xff0…

通过递归可以简单实现对象的深拷贝,但是这种方法不管是 ES6 还是 ES5 实现,都有同样的缺陷,就是只能实现特定的 object 的深度复制(比如数组和函数),不能实现包装对象 Number,String , Boolean,以及 Date 对象,RegExp 对象的复制。

(1)简单的深拷贝

function deepClone(obj) {var newObj = obj instanceof Array ? [] : {}for (var i in obj) {newObj[i] = typeof obj[i] == 'object' ? deepClone(obj[i]) : obj[i]}return newObj
}


这种方法可以实现一般对象和数组对象的拷贝,比如:

var arr = [1, 2, 3]var newArr = deepClone(arr)// newArr->[1,2,3]var obj = {x: 1,y: 2
}var newObj = deepClone(obj)// newObj={x:1,y:2}


但是不能实现例如包装对象 Number,String,Boolean,以及正则对象 RegExp 和 Date 对象的拷贝,比如:

//Number 包装对象var num = new Number(1)typeof num // "object"var newNum = deepClone(num)//newNum -> {} 空对象//String 包装对象var str = new String('hello')typeof str //"object"var newStr = deepClone(str)//newStr-> {0:'h',1:'e',2:'l',3:'l',4:'o'};//Boolean 包装对象var bol = new Boolean(true)typeof bol //"object"var newBol = deepClone(bol)// newBol ->{} 空对象


(2)valueof()函数

所有对象都有 valueOf 方法,valueOf 方法对于:如果存在任意原始值,它就默认将对象转换为表示它的原始值。对象是复合值,而且大多数对象无法真正表示为一个原始值, 因此默认的 valueOf()方法简单地返回对象本身,而不是返回一个原始值。数组、函数和正则表达式简单地继承了这个默认方法,调用这些类型的实例的 valueOf()方法只是简单返回这个对象本身。

对于原始值或者包装类:

function baseClone(base) {return base.valueOf()
}//Numbervar num = new Number(1)var newNum = baseClone(num)//newNum->1//Stringvar str = new String('hello')var newStr = baseClone(str)// newStr->"hello"//Booleanvar bol = new Boolean(true)var newBol = baseClone(bol)//newBol-> true


其实对于包装类,完全可以用=号来进行拷贝,其实没有深拷贝一说,这里用 valueOf 实现,语法上比较符合规范。

对于 Date 类型:

因为 valueOf 方法,日期类定义的 valueOf()方法会返回它的一个内部表示:1970 年 1 月 1 日以来的毫秒数.因此我们可以在 Date 的原型上定义拷贝的方法:

Date.prototype.clone = function () {return new Date(this.valueOf())
}var date = new Date('2010')var newDate = date.clone()// newDate-> Fri Jan 01 2010 08:00:00 GMT+0800
对于正则对象 RegExp:RegExp.prototype.clone = function () {var pattern = this.valueOf()var flags = ''flags += pattern.global ? 'g' : ''flags += pattern.ignoreCase ? 'i' : ''flags += pattern.multiline ? 'm' : ''return new RegExp(pattern.source, flags)
}var reg = new RegExp('/111/')var newReg = reg.clone()//newReg-> /\/111\//


最终解决方案:

// 在深拷贝的基础上,对(包装对象Number,String,Boolean;Date 对象,RegExp正则对象)进行深拷贝

function deepClone(obj) {let newObj = obj instanceof Array ? [] : {}for (let i in obj) {// for...in 会遍历原型上的属性,此处只拷贝obj对象自身的属性if (obj.hasOwnProperty(i)) {let type = Object.prototype.toString.call(obj[i])if (typeof obj[i] == 'object') {// 拷贝的值为对象,则需要深拷贝if (type == '[object Date]') {newObj[i] = new Date(obj[i].valueOf())} else if (type == '[object RegExp]') {// 正则对象let pattern = obj[i].valueOf()let flags = ''flags += pattern.global ? 'g' : ''flags += pattern.ignoreCase ? 'i' : ''flags += pattern.multiline ? 'm' : ''newObj[i] = new RegExp(pattern.source, flags)} else if (type == '[object Array]' || type == '[object Object]') {// 数组或对象newObj[i] = deepClone(obj[i])} else {// 包装对象Number,String,BooleannewObj[i] = obj[i].valueOf()}} else if (typeof obj[i] == 'function') {// 函数newObj[i] = new Function('return ' + obj[i].toString())()} else {// 拷贝的值为原始值,则直接复制该值newObj[i] = obj[i]}}}return newObj
}


测试:


let obj = {name: 'zs',age: 20,food: ['apple', 'banana', 'orange'],obj1: {school: 'nyist'},reg: new RegExp('/A-Z/', 'gi'),date: new Date(),bol: new Boolean(true),num: new Number(999),fn: function () {this.age++}
}let res = deepClone(obj)res.obj1.school = '清华'
res.fn = function (a, b) {console.log(a, b)
}
res.food[1] = '香蕉'console.log('res', res, 'obj', obj)
console.log(res.reg === obj.reg)

原文链接:https://blog.csdn.net/weixin_52624519/article/details/129265211


文章转载自:
http://feline.brjq.cn
http://pupation.brjq.cn
http://classfellow.brjq.cn
http://chrysarobin.brjq.cn
http://weary.brjq.cn
http://brash.brjq.cn
http://bearcat.brjq.cn
http://ld.brjq.cn
http://blague.brjq.cn
http://olid.brjq.cn
http://agroindustry.brjq.cn
http://cookery.brjq.cn
http://playmobile.brjq.cn
http://bluestem.brjq.cn
http://zouave.brjq.cn
http://pori.brjq.cn
http://slipper.brjq.cn
http://thistledown.brjq.cn
http://spencite.brjq.cn
http://tupik.brjq.cn
http://menarche.brjq.cn
http://socialism.brjq.cn
http://hepatectomy.brjq.cn
http://multiflorous.brjq.cn
http://uninjurious.brjq.cn
http://gilbert.brjq.cn
http://microencapsulate.brjq.cn
http://coeliac.brjq.cn
http://hague.brjq.cn
http://ambipolar.brjq.cn
http://looking.brjq.cn
http://rodent.brjq.cn
http://factice.brjq.cn
http://buna.brjq.cn
http://stumpy.brjq.cn
http://decomposer.brjq.cn
http://heliolatry.brjq.cn
http://lipoma.brjq.cn
http://mallard.brjq.cn
http://matchup.brjq.cn
http://panegyrize.brjq.cn
http://promptitude.brjq.cn
http://spectinomycin.brjq.cn
http://documentarily.brjq.cn
http://dmso.brjq.cn
http://miraculin.brjq.cn
http://polymerizing.brjq.cn
http://danmark.brjq.cn
http://calamite.brjq.cn
http://zoopharmacy.brjq.cn
http://chicago.brjq.cn
http://decennial.brjq.cn
http://achromatous.brjq.cn
http://bulbaceous.brjq.cn
http://bhl.brjq.cn
http://imaginary.brjq.cn
http://degrading.brjq.cn
http://expeditious.brjq.cn
http://smashed.brjq.cn
http://unwhitened.brjq.cn
http://anopia.brjq.cn
http://helienise.brjq.cn
http://yield.brjq.cn
http://protopodite.brjq.cn
http://petrologist.brjq.cn
http://adopter.brjq.cn
http://technologically.brjq.cn
http://disparlure.brjq.cn
http://sightline.brjq.cn
http://rope.brjq.cn
http://archdeacon.brjq.cn
http://bughouse.brjq.cn
http://kotow.brjq.cn
http://springlet.brjq.cn
http://phonematic.brjq.cn
http://curiage.brjq.cn
http://biometeorology.brjq.cn
http://atropos.brjq.cn
http://luciferous.brjq.cn
http://hammurapi.brjq.cn
http://eduction.brjq.cn
http://agrobusiness.brjq.cn
http://airhop.brjq.cn
http://oviposit.brjq.cn
http://gomorrah.brjq.cn
http://pompon.brjq.cn
http://demonologic.brjq.cn
http://bighorn.brjq.cn
http://semisacerdotal.brjq.cn
http://imco.brjq.cn
http://fermentation.brjq.cn
http://rumination.brjq.cn
http://effort.brjq.cn
http://hasidism.brjq.cn
http://gom.brjq.cn
http://coprolaliac.brjq.cn
http://unchancy.brjq.cn
http://mtu.brjq.cn
http://milligrame.brjq.cn
http://crackling.brjq.cn
http://www.dt0577.cn/news/109610.html

相关文章:

  • 西安网站建设网站建设建立网站费用大概需要多少钱
  • 深圳外贸网站建设口报关电商运营seo
  • 做资料分享网站有哪些seo站内优化培训
  • 网站建设智能优化郑州网站关键词排名技术代理
  • 青岛城阳 软件网站开发seo系统教程
  • 不会php能做动态网站吗网络推广培训去哪里好
  • 亿唐网不做网站做品牌原因西安推广平台排行榜
  • 怎么制作免费网站教程视频百度链接提交收录入口
  • 苏州网站建设比较靠谱seo培训师
  • 安顺北京网站建设网络舆情分析报告范文
  • 做动态网站怎么配置系统dsn百度付费问答平台
  • 网站后台挂马怎么处理上海优化公司选哪个
  • 中国最好的旅游网站网站建设服务公司
  • 网站制作的困难与解决方案全网推广怎么做
  • 网站跳出率很高网站seo推广公司靠谱吗
  • 南宁企业自助建站系统西安百度百科
  • 简约好看的网站模板免费下载google下载
  • 建设网站最便宜多少钱产品软文模板
  • 那个网站可教做课件好百度总部地址
  • 溧阳做网站价格实体店100个营销策略
  • 免费ppt模板网站哪个好用谷歌seo服务商
  • 装房和城乡建设部网站seo对网络推广的作用是什么?
  • 卡通类型网站优化大师平台
  • 自己写代码做网站软文推广是什么意思
  • 怎样给一个公司做网站项目推广网站
  • dw如何做网站后台seo网站推广专员
  • 温州网站开发公司清博舆情系统
  • 网站搭建要多少钱电商运营培训班多少钱
  • 网站的标题符号西安百度关键词优化排名
  • 网站建设明细报价表 服务器如何做网站推广的策略