今日文章目录
- 番外篇:浅拷贝
- 番外篇:深拷贝
- 小结
ToDoList + 番茄钟时间管理,整体上练习到一段落了。今天JS练习来个番外篇:纪录目前学到的浅拷贝与深拷贝方法。
在进行之前,要对 基础型别primitive value
与 物件型别reference value
有基本认识:
string
number
boolean
null
undefined
symbol
物件
函式
等。两者在赋值上的差别:
```
let a = 10;
let b = a;
a = 1000;
console.log("a: ", a); // a: 1000
console.log("b: ", b); // b: 10
```
b
复制a
的值到自己的变数容器里,所以当a
重新赋值,b
并不受影响。```
let c = {id: 1, name: "Joanna"};
let d = c;
c.name = "David";
console.log("c: ", c); // c: {id: 1, name: "David"}
console.log("d: ", d); // d: {id: 1, name: "David"}
```
d
指向与c
相同的位址,所以当c
重新赋值,代表相同位址的值更新,d
一同受影响。当我们取得资料如下方,如果我们要针对资料进行修改,但又不想动到原本资料时,我们可以怎麽做呢?
通常会拷贝一份,在拷贝资料上进行修改,但可能会碰到 浅拷贝 与 深拷贝的坑,也就是今天要练习的部分。
const info = [
"David",
false,
{
name: "Joanna",
hobbies:["Coding", "Cooking"]
}
];
const details = {
id: 1,
name: "Anna",
contact:{
phone: 0912345678,
country: "Taiwan",
hasVaccinated: true
}
};
slice(start, beforeEnd)
:
start
起始索引,beforeEnd
结束索引以前。如果没有指定,会全部复制作用阵列。Object.assign(target obj, resource1, resource2, ...)
target obj
。target obj
: 作用物件resource1
... : 要合并的来源物件,多组的话依 ,
隔开target obj
。[...array]
{...obj}
: spread operator
JSON.stringify()
-> JSON.parse()
在启动10天JS练习计划时,原本希望10天都练习到不同的功能。但在实际执行的时候,发现自己在练习ToDoList基本操作遇到一些坑,考量时间分配与自己能力情况下,选择好好把一个专项拆分成很小的项目,让这十天都有一点小进步。透过每天纪录,坦白说我每天都在担心产出,但还是得到一些收获:实际执行跟学会JS还是有很大的差距,抓紧努力练了,我要变强!!!
撑过20天的大家,可以开始倒数罗
<<: day5_Windows,Linux, MacOs 与 arm 的支援度和 x86 的差异
>>: 【领域展开 05 式】 WordPress.org 与 WordPress.com,你好.org
前言 吃了前菜、主餐,没有饭後甜点怎麽可以呢! 你不知道 Combo 套餐系列最後一道,以一杯 Mo...
Bootstrap已是目前全球被大量网页开发者使用的一个网页UI框架了,其特色在於使用简单,开发快速...
承接上一篇,新建专案後,按下试跑的画面如下: 假设自己身为使用者,打开 App 後呈现一片空白是什麽...
这次我要将电影的海报下载下来,那我们就开始吧。 依赖包主要是这两个以及所要取得资料的网页路由 接下来...
延续上回~~ 四、再往底下看是主要的Main Content,也就是对於使用者来说目光会停留最久的区...