回答編集履歴
3
a
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# Object.freeze()
|
6
6
|
|
7
|
-
[Object.freeze()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)を使えば、オブジェクトを不変に出来ますが、以下のデモコードの通り、ネストされ
|
7
|
+
[Object.freeze()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)を使えば、配列やオブジェクトを不変に出来ますが、以下のデモコードの通り、ネストされている場合は可変のままになります。
|
8
8
|
|
9
9
|
|
10
10
|
## 配列
|
2
a
answer
CHANGED
@@ -6,8 +6,30 @@
|
|
6
6
|
|
7
7
|
[Object.freeze()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)を使えば、オブジェクトを不変に出来ますが、以下のデモコードの通り、ネストされたオブジェクトは可変のままになります。
|
8
8
|
|
9
|
+
|
10
|
+
## 配列
|
9
11
|
```
|
10
12
|
// #1
|
13
|
+
const list1 = []
|
14
|
+
list1.push(1);
|
15
|
+
console.log(list1); //[ 1 ]
|
16
|
+
|
17
|
+
// #2
|
18
|
+
const list2 = [];
|
19
|
+
Object.freeze(list2);
|
20
|
+
//list2.push(2); //TypeError: Can't add property 0, object is not extensible
|
21
|
+
|
22
|
+
|
23
|
+
// #3
|
24
|
+
const list3 = [[]];
|
25
|
+
Object.freeze(list3);
|
26
|
+
list3[0].push(3);
|
27
|
+
console.log(list3); // [ [ 3 ] ]
|
28
|
+
```
|
29
|
+
|
30
|
+
## オブジェクト
|
31
|
+
```
|
32
|
+
// #1
|
11
33
|
const obj1 = {
|
12
34
|
id: 1
|
13
35
|
}
|
1
a
answer
CHANGED
@@ -4,8 +4,10 @@
|
|
4
4
|
|
5
5
|
# Object.freeze()
|
6
6
|
|
7
|
+
[Object.freeze()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)を使えば、オブジェクトを不変に出来ますが、以下のデモコードの通り、ネストされたオブジェクトは可変のままになります。
|
8
|
+
|
7
9
|
```
|
8
|
-
//
|
10
|
+
// #1
|
9
11
|
const obj1 = {
|
10
12
|
id: 1
|
11
13
|
}
|
@@ -13,7 +15,7 @@
|
|
13
15
|
obj1.id = 2;
|
14
16
|
console.log(obj1.id); //2
|
15
17
|
|
16
|
-
//
|
18
|
+
// #2
|
17
19
|
const obj2 = {
|
18
20
|
id: 10
|
19
21
|
}
|
@@ -22,7 +24,7 @@
|
|
22
24
|
obj2.id = 20;
|
23
25
|
console.log(obj2.id); //10
|
24
26
|
|
25
|
-
//
|
27
|
+
// #3
|
26
28
|
const obj3 = {
|
27
29
|
id: 100,
|
28
30
|
items: {
|