你是不是也疑惑过?就是当你复制一个东西时,到底这个复制品和原物是不是完全一样?这可不是那么容易回答!所以今天我就来帮你揭开谜团!
记住了,拷贝一个东西可不只是把值扔给新的变量那么简单。有时新的变量和原物还会连在一起,就像亲弟弟妹妹那样,一方变了,对方也要变。这样搞出来的复制品可是不一样的
就问你们有啥招没?我告诉你们,有!我们能用JSON转来转去复制那个变量。首先,把原变量变成个字符儿,然后整个儿扔进JSON里头重造一遍。这么弄出来的东西就能当新的使。这办法不赖?
记住,要是原变量里藏着对像类型的数值,那么拷贝时它的子变量索引也会跟着过去。这么说来,其实并没重新捏出一个全新的复制品哩,挺烦人的?别急,我们还有别的窍门儿来解决这个问题。
又一招就是用 Object.assign() 方法搞定。这个方法就像变魔术一样,在不改变原对象的情况下给你制作出一个新的完整副本。基本流程就是把旧对象的所有属性都装进一个空白对象里,最后再拿出成品。
你知道吗?用 Object.assign() 这个办法拷贝对象时,即使原对象里有孩子,拷出来的新对象里的子对象还是原来的那几个。事实上,他们和爸爸妈妈一起住着,住在同一块地盘儿上,这真有点儿玄乎了!
告诉你个好办法!你想复制数组或其他变量?试试Object.assign(),带个空的{},参数就行。瞬间就有个和原物一模一样的新东西出来!就是这么容易好用!
想知道复制一个对象副本怎么弄吗?其实用JSON转码或Object.assign()方法都行。不过得明白,每个方法都有各自的优缺点!所以还是得看具体情况选哪种。咱们今天就是来聊聊复制对象副本这事的,学完以后发现两种方法也能实现不同效果,要么是完全独立的副本,要么是用共同存储器创建的副本,真有意思!大家有啥想法都来唠嗑!别忘了点赞分享!
// 封装成方法// 返回一个新的变量副本 // get a copy of an object function getNewObjectOf(src) { return Object.assign({}, src); }
评论0