争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

js克隆的理解之深层克隆与浅层克隆(代码案例)

时间:2024/5/16作者:未知来源:争怎路由网人气:

{}, toStr = Object.prototype.toString, arrStr = '[object Array]'; for(var prop in Origin) { //第一步,判断对象是不是原始值 if(Origin.hasOwnProperty(prop)) { if(typeof(Origin[prop]) == 'object') { if(toStr.call(Origin[prop]) == arrStr) { Target[prop] = []; } else { Target[prop] = {}; } deepClone(Origin[prop], Target[prop]); } else { Target[prop] = Origin[prop]; } } } } </script>

js克隆的理解之深层克隆和浅层克隆(代码实例)

js克隆的理解之深层克隆和浅层克隆(代码实例)

深层克隆

注意:判断是否是原型的方法,要首先想到for in 和hasProperty的方法,然后再用typeof(Origin[prop]) =='object',

  判断数组和对象的方法,则有三种,constructor ,toString call ,instanceof

   此处用的是toString.call(Origin[prop]=='arrStr'),其实就是判断是否是[object Array]

   最后递归则用回调deepClone()方法,建立相应数组和对象

下面是通过三目运算符完善代码,并且加了判断方法不为空,还有加了返回值Target

function deepClone(Origin, Target) {
	var Target = Target   

关键词:js克隆的理解之深层克隆与浅层克隆(代码案例)




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版