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

学做宝宝衣服网站/信阳seo优化

学做宝宝衣服网站,信阳seo优化,邓州网站建设,大连新闻网前面的话 对象拷贝分为浅拷贝(shallow)和深拷贝(deep)两种。浅拷贝只复制一层对象的属性,并不会进行递归复制,而javascript存储对象都是存地址的,所以浅拷贝会导致对象中的子对象指向同一块内存地址;而深拷贝则不同,它…

前面的话

  对象拷贝分为浅拷贝(shallow)和深拷贝(deep)两种。浅拷贝只复制一层对象的属性,并不会进行递归复制,而javascript存储对象都是存地址的,所以浅拷贝会导致对象中的子对象指向同一块内存地址;而深拷贝则不同,它不仅将原对象的各个属性逐个复制出去,而且将原对象各个属性所包含的对象也依次采用深拷贝的方法递归复制到新对象上,拷贝了所有层级。本文将详细介绍对象拷贝

 

浅拷贝

【方法一】简单拷贝

  新建一个空对象,使用for-in循环,将对象的所有属性复制到新建的空对象中

function simpleClone1(obj){if(typeof obj != 'object'){return false;}var cloneObj = {};for(var i in obj){cloneObj[i] = obj[i];}return cloneObj;
}var obj1={a:1,b:2,c:[1,2,3]};
var obj2=simpleClone1(obj1);
console.log(obj1.c); //[1,2,3]
console.log(obj2.c); //[1,2,3]
obj2.c.push(4);
console.log(obj2.c); //[1,2,3,4]
console.log(obj1.c); //[1,2,3,4]

【方法二】使用属性描述符

  通过对象的原型,建立一个空的实例对象。通过forEach语句,获取到对象的所有属性的属性描述符,将其作为参数,设置到新建的空实例对象中

function simpleClone2(orig){var copy = Object.create(Object.getPrototypeOf(orig));Object.getOwnPropertyNames(orig).forEach(function(propKey){var desc = Object.getOwnPropertyDescriptor(orig,propKey);Object.defineProperty(copy,propKey,desc);});return copy;
}var obj1={a:1,b:2,c:[1,2,3]};
var obj2=simpleClone1(obj1);
console.log(obj1.c); //[1,2,3]
console.log(obj2.c); //[1,2,3]
obj2.c.push(4);
console.log(obj2.c); //[1,2,3,4]
console.log(obj1.c); //[1,2,3,4]

【方法三】使用jquery的extend()方法

var obj1={a:1,b:2,c:[1,2,3]};
var obj2=$.extend({},obj1);
console.log(obj1.c); //[1,2,3]
console.log(obj2.c); //[1,2,3]
obj2.c.push(4);
console.log(obj2.c); //[1,2,3,4]
console.log(obj1.c); //[1,2,3,4]

 

深拷贝

【方法一】遍历复制

  复制对象的属性时,对其进行判断,如果是数组或对象,则再次调用拷贝函数;否则,直接复制对象属性

function deepClone1(obj,cloneObj){if(typeof obj != 'object'){return false;}var cloneObj = cloneObj || {};for(var i in obj){if(typeof obj[i] === 'object'){cloneObj[i] = (obj[i] instanceof Array) ? [] : {};arguments.callee(obj[i],cloneObj[i]);}else{cloneObj[i] = obj[i]; }  }return cloneObj;
}var obj1={a:1,b:2,c:[1,2,3]};
var obj2=deepClone1(obj1);
console.log(obj1.c); //[1,2,3]
console.log(obj2.c); //[1,2,3]
obj2.c.push(4);
console.log(obj2.c); //[1,2,3,4]
console.log(obj1.c); //[1,2,3]

【方法二】json

  用JSON全局对象的parse和stringify方法来实现深复制算是一个简单讨巧的方法,它能正确处理的对象只有Number、String、Boolean、Array、扁平对象,即那些能够被json直接表示的数据结构

function jsonClone(obj){return JSON.parse(JSON.stringify(obj));
}var obj1={a:1,b:2,c:[1,2,3]};
var obj2=jsonClone(obj1);
console.log(obj1.c); //[1,2,3]
console.log(obj2.c); //[1,2,3]
obj2.c.push(4);
console.log(obj2.c); //[1,2,3,4]
console.log(obj1.c); //[1,2,3]

【方法三】使用jquery的extend()方法

var obj1={a:1,b:2,c:[1,2,3]};
var obj2=$.extend(true,{},obj1);
console.log(obj1.c); //[1,2,3]
console.log(obj2.c); //[1,2,3]
obj2.c.push(4);
console.log(obj2.c); //[1,2,3,4]
console.log(obj1.c); //[1,2,3]
http://www.jmfq.cn/news/4984507.html

相关文章:

  • 苹果软件做ppt下载网站有哪些/购物网站推广方案
  • 国外优秀网站/确认已有81人感染
  • 网站开发上海/互联网广告代理加盟
  • 莱芜中医院网站/如何在百度做推广
  • 建材网站制作/游戏网站交换友情链接
  • 红色政府网站模板 dede/吉林网络公司
  • 新乡网站建设设计/优化什么意思
  • 小程序商场/安卓优化大师app下载安装
  • 济宁市任城区建设局网站/seo高级优化方法
  • 招生网站建设板块/营销策略的思路
  • 网站制作主题/怎么给公司做网站推广
  • 建设一个网站的基本成本/推广教程
  • 设计商业网站应该做到什么/平面设计网站
  • 怎样做视频播放网站/河南网站公司
  • 自己做电商网站./百度官方网站下载
  • 没有网站怎么做cpa赚钱/网络营销策划的方法
  • 企业彩铃制作网站/百度热搜榜今日头条排名
  • 什么是百度推广/乐天seo视频教程
  • 网站建设美国/深圳全网营销推广平台
  • 深圳网博网站建设/百度收录提交工具
  • 雪亮工程建设网站界面/网络营销顾问招聘
  • 做网站客服维护电话怎么打/百度竞价关键词怎么优化
  • 温州做真皮女鞋的网站有哪些/开鲁seo服务
  • 公司网站服务器托管/推广之家app下载
  • 新网站 蜘蛛/找客户的十大方法
  • 网站设计做微信发现界面/网站优化教程
  • 做免费网站教程/logo设计
  • wordpress可爱主题下载/seo站长
  • 学好网页设计与网站建设的意义/山东建站
  • 武汉营销型网站/查询百度关键词排名