回答編集履歴
3
a
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
[Object.freeze()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)を使えば、オブジェクトを不変に出来ますが、以下のデモコードの通り、ネストされ
|
13
|
+
[Object.freeze()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)を使えば、配列やオブジェクトを不変に出来ますが、以下のデモコードの通り、ネストされている場合は可変のままになります。
|
14
14
|
|
15
15
|
|
16
16
|
|
2
a
test
CHANGED
@@ -13,6 +13,50 @@
|
|
13
13
|
[Object.freeze()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)を使えば、オブジェクトを不変に出来ますが、以下のデモコードの通り、ネストされたオブジェクトは可変のままになります。
|
14
14
|
|
15
15
|
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
## 配列
|
20
|
+
|
21
|
+
```
|
22
|
+
|
23
|
+
// #1
|
24
|
+
|
25
|
+
const list1 = []
|
26
|
+
|
27
|
+
list1.push(1);
|
28
|
+
|
29
|
+
console.log(list1); //[ 1 ]
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
// #2
|
34
|
+
|
35
|
+
const list2 = [];
|
36
|
+
|
37
|
+
Object.freeze(list2);
|
38
|
+
|
39
|
+
//list2.push(2); //TypeError: Can't add property 0, object is not extensible
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
// #3
|
46
|
+
|
47
|
+
const list3 = [[]];
|
48
|
+
|
49
|
+
Object.freeze(list3);
|
50
|
+
|
51
|
+
list3[0].push(3);
|
52
|
+
|
53
|
+
console.log(list3); // [ [ 3 ] ]
|
54
|
+
|
55
|
+
```
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
## オブジェクト
|
16
60
|
|
17
61
|
```
|
18
62
|
|
1
a
test
CHANGED
@@ -10,9 +10,13 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
+
[Object.freeze()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)を使えば、オブジェクトを不変に出来ますが、以下のデモコードの通り、ネストされたオブジェクトは可変のままになります。
|
14
|
+
|
15
|
+
|
16
|
+
|
13
17
|
```
|
14
18
|
|
15
|
-
//
|
19
|
+
// #1
|
16
20
|
|
17
21
|
const obj1 = {
|
18
22
|
|
@@ -28,7 +32,7 @@
|
|
28
32
|
|
29
33
|
|
30
34
|
|
31
|
-
//
|
35
|
+
// #2
|
32
36
|
|
33
37
|
const obj2 = {
|
34
38
|
|
@@ -46,7 +50,7 @@
|
|
46
50
|
|
47
51
|
|
48
52
|
|
49
|
-
//
|
53
|
+
// #3
|
50
54
|
|
51
55
|
const obj3 = {
|
52
56
|
|