teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

重複削除

2020/09/16 13:59

投稿

think49
think49

スコア18194

answer CHANGED
@@ -110,9 +110,4 @@
110
110
 
111
111
  - [[JavaScript] オブジェクト, Map, WeakMap の使い分け方.md · GitHub](https://gist.github.com/think49/31a2cedb5c653fd18086ade669c04323)
112
112
 
113
- 私は「オブジェクト初期化子を使用してObject型のデータを初期化する」の意味で「オブジェクト初期化子を使用」と表現しています。
114
-
115
-
116
-
117
-
118
113
  Re: manusa360 さん

3

表現の修正

2020/09/16 13:59

投稿

think49
think49

スコア18194

answer CHANGED
@@ -105,7 +105,7 @@
105
105
  ```
106
106
 
107
107
  がより汎用的です。
108
- この場合、「プロパティに整数値のみを使用している為、オブジェクト初期化子(new Object)でも実質的に問題はない」等、採用理由がある場合も思います。
108
+ この場合、「プロパティに整数値のみを使用している為、オブジェクト初期化子(new Object)でも実質的に問題はない」等、採用理由がある場合もあります。
109
109
  生成されたオブジェクトの性質を正確に示すためにも「オブジェクト初期化子でオブジェクトを生成していること」を私は強調します。
110
110
 
111
111
  - [[JavaScript] オブジェクト, Map, WeakMap の使い分け方.md · GitHub](https://gist.github.com/think49/31a2cedb5c653fd18086ade669c04323)

2

オブジェクト初期化子

2020/09/16 13:58

投稿

think49
think49

スコア18194

answer CHANGED
@@ -69,4 +69,50 @@
69
69
  console.dir(createTree2(src));
70
70
  ```
71
71
 
72
+ ### オブジェクト初期化子
73
+
74
+ @Zuishin さんのコメントに対しての返答。
75
+ (長文なので、回答に追記します)
76
+
77
+ > 以前も気になったんですが、オブジェクト「初期化子」とオブジェクトを混同していませんか?
78
+
79
+ 私は「オブジェクト初期化子を使用してObject型のデータを初期化する」の意味で「オブジェクト初期化子を使用」と表現しています。
80
+
81
+ **(1) オブジェクト**
82
+ この文脈で「オブジェクト」と表現すると、
83
+
84
+ - new Object と受け取る人
85
+ - Object 型のデータと受け取る人
86
+
87
+ に分類されて解釈に違いが現れる為、曖昧な表現を私は避けます。
88
+ (私が読者なら、言葉通りに後者で解釈する事を試み、文脈を読み取って適宜読み替えます)
89
+ 私は「new Object」「オブジェクト初期化子」「Object型」を明確に使い分ける性質です。
90
+
91
+ **(2) オブジェクト初期化子とオブジェクト**
92
+ 「オブジェクト(Object型のデータ)」と「オブジェクト初期化子」では生成されるオブジェクトの範囲がまるで違います。
93
+ new Objectもnew Arrayも同様にObject型ですが、生成されたオブジェクトが持つ性質は全く違ったものになります。
94
+
95
+ - (A)「new Map」と「オブジェクト初期化子」
96
+ - (B)「new Map」と「オブジェクト」
97
+
98
+ 今回、私は (A) で対比しましたが、仮に (B) で対比された場合、私は「new Mapもオブジェクトなので、両者は比較対象になりません」と突っ込みを入れるでしょう。
99
+
100
+ **(3) 実用性**
101
+ 単純な「Object型のデータの入れ物」として扱う場合は、`new Object` にメリットはほとんどなく、
102
+
103
+ ```JavaScript
104
+ Object.create(null)
105
+ ```
106
+
107
+ がより汎用的です。
108
+ この場合、「プロパティに整数値のみを使用している為、オブジェクト初期化子(new Object)でも実質的に問題はない」等、採用理由がある場合も思います。
109
+ 生成されたオブジェクトの性質を正確に示すためにも「オブジェクト初期化子でオブジェクトを生成していること」を私は強調します。
110
+
111
+ - [[JavaScript] オブジェクト, Map, WeakMap の使い分け方.md · GitHub](https://gist.github.com/think49/31a2cedb5c653fd18086ade669c04323)
112
+
113
+ 私は「オブジェクト初期化子を使用してObject型のデータを初期化する」の意味で「オブジェクト初期化子を使用」と表現しています。
114
+
115
+
116
+
117
+
72
118
  Re: manusa360 さん

1

ハッシュマップ -> マップ

2020/09/16 13:57

投稿

think49
think49

スコア18194

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  検索効率が高いマップを利用するとして、
4
4
  「常にparentがchildrenに先行する条件」なら、@jun68yktさんと同じ方向性を。
5
- 順序に規則性がないなら、ハッシュマップ生成処理を独立させます。
5
+ 順序に規則性がないなら、マップ生成処理を独立させます。
6
6
 
7
7
  ```JavaScript
8
8
  'use strict';