JS 浅层复制 与 深层复制 DAY60

浅层复制 ( shallow copy )

for in 写法

// 浅层复制
var family = {
    home: '小黑家',
    members:{
        mom: '老妈',
        father: '老爸',
        black: '小黑',
    }
}
var newFamily = {};
for(var key in family){
    console.log(key); // home members (family第一层属性)
    newFamily[key] = family[key];
}
console.log(newFamily,family);

// 修改第一层属性 
newFamily.home = '大雄家';
console.log(newFamily,family); // 大雄家 小黑家
console.log(newFamily === family); // false

// 修改第二层属性
newFamily.members.black = '大黑';
console.log(newFamily,family); // 大黑 大黑
console.log(newFamily === family); // false
// 且会发现 两个同时都会改 所以只能做到第一层的复制

jQuery 写法

var newFamily2 = jQuery.extend({},family);

ES6 写法

var newFamily3 = Object.assign({},family);

深层复制(deep copy)
透过 JSON.stringify 先转字串 再透过 JSON.parse 转成物件

var family = {
    home: '小黑家',
    members:{
        mom: '老妈',
        father: '老爸',
        black: '小黑',
    }
}
var newFamily4 = JSON.parse(JSON.stringify(family));
newFamily4.home = '小白家';
newFamily4.members.black = '大黑';
console.log(family,newFamily4); // 小黑家 小黑 , 小白家 大黑
console.log(family === newFamily4); // false

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷/images/emoticon/emoticon41.gif


<<:  前端工程学习日记第9天

>>:  特权蠕变(Privilege Creep)& 自由访问控制(DAC)

Day-8 字串(下)

用 [] 来取得字元 要取出某个字元,可以指定他的offset,第一个为最左边的offset 是 0...

Day29. 范例:运输系统 (抽象工厂模式)

本文同步更新於blog 前情提要:铁路运输系统,参考范例:运输系统(工厂方法模式) <?p...

[Day 28] - 手把手跨出第一步!– (1)烧录闪烁程序到Arduino Part.1

17King 制造中,订阅一下吧(*´∀`)~♥ 今日影片长度:07 分 32 秒 本集重点条列: ...

Day 2 - 面试面试面试

投了多封的履历後也很顺利的有了面试的机会,接下来在这个部分简单分享一下过去面试时的一些心得 面试前的...

【Day2】应用上大致的规划

这节内容就是应用大致的规划,使用的技术栈以及後台开发环境建立 1. 应用大致的规划 2. 使用的技术...