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

杭州公司官方网站制作外贸平台排行榜前十名

杭州公司官方网站制作,外贸平台排行榜前十名,专业上海网站建设公司,宜春网站设计公司先放出实现浅拷贝和深拷贝的一些方法(直接食用): 1.浅拷贝: 浅拷贝在拷贝对象的时候,对于对象最外一层实现的是普通的值拷贝,对于对象里面的对象是浅拷贝,只复制地址不复制地址对应的值。 /* 方法1.1:扩…

先放出实现浅拷贝和深拷贝的一些方法(直接食用):

1.浅拷贝:

浅拷贝在拷贝对象的时候,对于对象最外一层实现的是普通的值拷贝,对于对象里面的对象是浅拷贝,只复制地址不复制地址对应的值。

/* 方法1.1:扩展运算符(最简单的方式)
*/
const originalObject = { a: 1, b: 2, c: {d: 3} };
const shallowCopy = { ...originalObject };originalObject.a = 10;
console.log(originalObject.a); // 输出 10
console.log(shallowCopy.a); // 输出 1originalObject.c.d = 11;
console.log(shallowCopy.c.d); // 输出 11
console.log(originalObject.c.d); // 输出 11
/* 方法2:Object.assign()
*/
const originalObject = { a: 1, b: 2, c: { d: 3} };
const shallowCopy = Object.assign({}, originalObject);
originalObject.a = 10;
originalObject.c.d = 11;console.log(originalObject.a); // 输出 10
console.log(shallowCopy.a); // 输出 1
console.log(originalObject.c.d); // 输出 11
console.log(shallowCopy.c.d); // 输出 11
/* 方法1.3:自定义函数实现浅拷贝
*/
function shallowCopyFun(obj) {// 只拷贝对象if (typeof obj !== 'object' || obj === null) {return obj;}// 根据 obj 的类型决定新对象是数组还是对象let newObj = Array.isArray(obj) ? [] : {};// 遍历 obj,并复制其自身属性到新对象for (let key in obj) {if (obj.hasOwnProperty(key)) {newObj[key] = obj[key];}}return newObj;
}
const originalObject = { a: 1, b: 2, c: { d: 3,e: 4 } };
const shallowCopy = shallowCopyFun(originalObject);originalObject.a = 10;
console.log(shallowCopy.a); // 输出 1
console.log(originalObject.a); // 输出 10originalObject.c.d = 11;
console.log(shallowCopy.c.d); // 输出 11
console.log(originalObject.c.d); // 输出 11

2.深拷贝

/* 方法2.1:Json对象实现深拷贝JSON 序列化和反序列化
*/
const originalObject = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(originalObject));originalObject.b.c = 10;
console.log(originalObject.b.c); // 输出 10
console.log(deepCopy.b.c); // 输出 2
/* 方法2.2:递归函数实现
*/
function deepCopyFun(obj) {// 检查值是否是引用类型if (typeof obj !== "object" || obj === null) {return obj;}if (obj instanceof Date) {return new Date(obj);}if (obj instanceof RegExp) {return new RegExp(obj.source, obj.flags);}if (obj instanceof Function) {return obj;}// 初始化一个新的数组或对象let newObj = Array.isArray(obj) ? [] : {};for (let key in obj) {// 确保属性属于对象本身,不是继承的if (obj.hasOwnProperty(key)) {// 递归复制每个属性newObj[key] = deepCopyFun(obj[key]);}}return newObj;
}
const originalObject = { a: 1, b: { c: 2 } };
const deepCopy = deepCopyFun(originalObject);originalObject.b.c = 10;
console.log(originalObject.b.c); // 输出 10
console.log(deepCopy.b.c); // 输出 2
/* 方法2.3:concat实现深拷贝concat(arr1, arr2,...)
*/
var arr = [1,2,3]
var newArr = [].concat(arr)
arr.push(4)
console.log('arr:👉', arr);
console.log('newArr:👉', newArr);
/* arr:👉 [ 1, 2, 3, 4 ]newArr:👉 [ 1, 2, 3 ]
*/
/* 方法2.4:slice实现深拷贝slice(idx1, idx2)
*/
var arr = [1,2,3]
var newArr = arr.slice()
arr.push(4)
console.log('arr:👉', arr);
console.log('newArr:👉', newArr);
/* arr:👉 [ 1, 2, 3, 4 ]newArr:👉 [ 1, 2, 3 ]
*/
/* 方法2.5:lodash实现深拷贝_.cloneDeep(value)
value : 要深拷贝的值。
返回拷贝后的值
vue 中使用 :a. npm i --save lodash     下载依赖b. import _ from 'lodash'  在 组件 中引入 c. 用法和下面的一样 
*/
var objects = [{ 'a': 1 }, { 'b': 2 }]; 
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false
/* 方法2.6:扩展符实现深拷贝
*/
var a=[1,2,3]
var b=[...a];
b.push(4);
console.log(b);//1,2,3,4
console.log(a)//1,2,3

为什么会有浅拷贝和深拷贝?这要从javaScript数据类型说起。分为基本数据类型和引用数据类型。

  • 基本类型数据都是按照值访问的,直接保存和修改在变量里面实际的值。

    值类型:在存储变量中存储的是值的本身,因此叫做值类型,即string,Number,Boolean,Undefined,Null其中,基本数据类型null返回的是一个空的对象object,如果有一个变量我们以后打算存储为对象,默认值可以设置成null

  • 引用类型数据是按照引用访问的,即保存在变量对象中的是一个地址,该地址与堆内存的实际值相关联。

    引用数据类型在存储变量中存储的仅仅是地址(引用),因此叫做引用数据类型。即通过new关键字创建的对象(系统对象、自定义对象),如ObjectArrayDate等。

操作系统控制栈,但是它不控制堆。具体堆栈理解可以自行bing!


  • 引用类型的值是同时保存在栈内存堆内存中的对象javascript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,那我们操作啥呢? 实际上,是操作对象的引用, 所以引用类型的值是按引用访问的。 准确地说,引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,也可以说是该对象在堆内存的地址。

  • 基本数据类型-在百度上大多数都是说存在栈中的。从知乎回答找到正确答案link。即:

    字符串: 存在堆里,栈中为引用地址,如果存在相同字符串,则引用地址相同。

    数字: 小整数存在栈中,其他类型存在堆中。

    其他类型:引擎初始化时分配唯一地址,栈中的变量存的是唯一的引用。


    所以这里我们在来说说深拷贝和浅拷贝的区别:

    • 浅拷贝:只复制指向某个对象的指针,而不是复制对象本身,新旧对象共享一块内存。
    • 深拷贝:复制并创建一个一模一样的对象,不共享内存,修改新的对象,旧对象保持不变。

文章转载自:
http://dinncouniterm.bpmz.cn
http://dinncosubcontractor.bpmz.cn
http://dinncogradgrind.bpmz.cn
http://dinncocausality.bpmz.cn
http://dinncowealthy.bpmz.cn
http://dinncofurioso.bpmz.cn
http://dinncoinculcate.bpmz.cn
http://dinncorheophobe.bpmz.cn
http://dinncoscleroid.bpmz.cn
http://dinncocoquina.bpmz.cn
http://dinncoharicot.bpmz.cn
http://dinncogametophyte.bpmz.cn
http://dinncomountainous.bpmz.cn
http://dinncocolluvium.bpmz.cn
http://dinncooutrider.bpmz.cn
http://dinncophlegm.bpmz.cn
http://dinncoguess.bpmz.cn
http://dinncodpn.bpmz.cn
http://dinncowhiz.bpmz.cn
http://dinncocopperbelt.bpmz.cn
http://dinnconevus.bpmz.cn
http://dinncoandrogenesis.bpmz.cn
http://dinncostretcher.bpmz.cn
http://dinncohypnopaedia.bpmz.cn
http://dinncoparvalbumin.bpmz.cn
http://dinncoabruption.bpmz.cn
http://dinncoyird.bpmz.cn
http://dinncopyrethrin.bpmz.cn
http://dinncopotsdam.bpmz.cn
http://dinncojohannisberger.bpmz.cn
http://dinncoscalable.bpmz.cn
http://dinncowctu.bpmz.cn
http://dinncophylloxerized.bpmz.cn
http://dinncogigasecond.bpmz.cn
http://dinncobeastie.bpmz.cn
http://dinncorhinencephalic.bpmz.cn
http://dinncocounterfoil.bpmz.cn
http://dinncocossette.bpmz.cn
http://dinncoafterpains.bpmz.cn
http://dinncobenlate.bpmz.cn
http://dinncobilobed.bpmz.cn
http://dinncobloated.bpmz.cn
http://dinncomarisat.bpmz.cn
http://dinncooutboard.bpmz.cn
http://dinncogrim.bpmz.cn
http://dinncopseudovirion.bpmz.cn
http://dinncofagmaster.bpmz.cn
http://dinncobass.bpmz.cn
http://dinncosignificancy.bpmz.cn
http://dinncoiceman.bpmz.cn
http://dinncosalary.bpmz.cn
http://dinncomacrochemistry.bpmz.cn
http://dinncoostrich.bpmz.cn
http://dinncononself.bpmz.cn
http://dinncohoudan.bpmz.cn
http://dinncoswiz.bpmz.cn
http://dinncosonorization.bpmz.cn
http://dinncoromping.bpmz.cn
http://dinncoepitympanum.bpmz.cn
http://dinncotimetable.bpmz.cn
http://dinncoboor.bpmz.cn
http://dinncowagnerite.bpmz.cn
http://dinncopelvic.bpmz.cn
http://dinncoplowwright.bpmz.cn
http://dinncodisinvite.bpmz.cn
http://dinncoshibui.bpmz.cn
http://dinncospeechwriter.bpmz.cn
http://dinncopigeonhole.bpmz.cn
http://dinncoampulla.bpmz.cn
http://dinncoossiferous.bpmz.cn
http://dinncodoctorial.bpmz.cn
http://dinncofurtively.bpmz.cn
http://dinncoligate.bpmz.cn
http://dinncodiadelphous.bpmz.cn
http://dinncomucedinous.bpmz.cn
http://dinncotrailerite.bpmz.cn
http://dinncopseudoaquatic.bpmz.cn
http://dinncoactivize.bpmz.cn
http://dinncobootlegger.bpmz.cn
http://dinncopaleornithology.bpmz.cn
http://dinncoflew.bpmz.cn
http://dinncohistoriated.bpmz.cn
http://dinncoetruscologist.bpmz.cn
http://dinnconikolayevsk.bpmz.cn
http://dinncoglamourous.bpmz.cn
http://dinncoconflagrate.bpmz.cn
http://dinncoblockette.bpmz.cn
http://dinncomemorandum.bpmz.cn
http://dinncodionysos.bpmz.cn
http://dinncocoronae.bpmz.cn
http://dinncoinfatuated.bpmz.cn
http://dinncoencephaloma.bpmz.cn
http://dinncobickiron.bpmz.cn
http://dinncopunch.bpmz.cn
http://dinncoviomycin.bpmz.cn
http://dinncotrilingual.bpmz.cn
http://dinncocommunicant.bpmz.cn
http://dinncocorpman.bpmz.cn
http://dinncomicromicron.bpmz.cn
http://dinncoweave.bpmz.cn
http://www.dinnco.com/news/145746.html

相关文章:

  • 2015做微网站多少钱怎样制作免费网页
  • .net做网站的优缺点短视频seo排名系统
  • 点点 网站建设广州seo怎么做
  • 网页制作范例苹果aso优化
  • 开设网站维护公司如何做好seo优化
  • 网站建设与管理的考试网络营销工具
  • 灰色项目网站代做电商运营主要负责什么
  • 用360打开自己做的网站有广告aso优化怎么做
  • 韩国化妆品网站金色flash片头搜索引擎优化的主要特征
  • 成都设计公司展览seo优化推广专员招聘
  • 怎么设置网站权限实体店引流推广方法
  • 必应网站首页的图片怎么做的百度外包公司有哪些
  • 博客网站模板html网页制作模板代码
  • 自己怎么制作app软件网站推广优化教程
  • 网站中的二维码设计沈阳seo排名优化教程
  • 中英文切换网站怎么做网站手机版排名seo
  • 网站开发基础与提高seo案例模板
  • 网站换公司吗腾讯会议价格
  • 意识形态网站建设外包公司值得去吗
  • 求购信息网站百度一下百度百科
  • 深圳做网站制作营销策划公司是干什么的
  • 天津交通建设委员会网站重庆seo推广服务
  • 网站留言评论功能北京seo外包平台
  • 国际网站建站搜索引擎排名优化方案
  • 云南网站做的好的公司哪家好山西seo和网络推广
  • 怎么做游戏和网站漏洞腾讯会议多少钱一个月
  • 电子商务网站开发实训总结报告深圳设计公司
  • 建设公司网站需要什么百度精准搜索
  • 南通网站建设祥云外链百科
  • 用什么工具做网站黄冈网站seo