回答編集履歴

1

削りすぎたので一部復活

2019/03/18 03:01

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -108,82 +108,82 @@
108
108
 
109
109
 
110
110
 
111
+ xのプロパティ名を抜き出し配列に変換する。
112
+
113
+
114
+
115
+ > ```JavaScript
116
+
117
+ > .forEach
118
+
119
+ > ```
120
+
121
+
122
+
123
+ 左辺のオブジェクトのforEachプロパティを参照する。
124
+
125
+
126
+
127
+ > ```JavaScript
128
+
129
+ > (y => {
130
+
131
+ > console.log(`${y}: ${x[y]}`);
132
+
133
+ > });
134
+
135
+ > ```
136
+
137
+
138
+
139
+ [アロー関数](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions)を定義する。
140
+
141
+ アロー関数の中身はy引数と、xオブジェクトのyプロパティにアクセスし[テンプレート文字列](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/template_strings)で文字列に変換したものを画面出力する。
142
+
143
+
144
+
145
+ ---
146
+
147
+
148
+
149
+ 答え合わせ
150
+
151
+
152
+
153
+ > ①定数xに対して、「a: 1」と「b: 2」の二つのプロパティをオブジェクトとして代入。
154
+
155
+
156
+
157
+ 日本語の問題で「オブジェクトとして代入」は意味不明になってます。
158
+
159
+ 主体となる文章は「定数xにオブジェクトを代入」で、プロパティの説明等は修飾と捉えるべきです。
160
+
161
+
162
+
163
+ > ②オブジェクトxからKeyのデータ値(a, b)を取ってくるよう設定。
164
+
165
+
166
+
167
+ 模範解答は少々意地悪でしたね。
168
+
169
+ ですが「データ値(a, b)を取ってくる」では意味不明です。
170
+
171
+ [Object.keys]((https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys))は引数のオブジェクトが所持しているプロパティ名だけをピックアップして新しい配列を作るものです。
172
+
173
+ なのでコードで書けば`["a", "b"]`が戻り値として返ってきます。
174
+
175
+
176
+
177
+ これらの情報はaやbのプロパティの実際の値(1や2)が捨てられてしまっています。
178
+
179
+ なので「プロパティ名の配列に変換する」などという表現を使うべきでしょう。
180
+
181
+
182
+
111
183
  > ③配列(Object.keys(x))から要素を一つずつ取ってくるよう設定。
112
184
 
113
185
 
114
186
 
115
- > ```JavaScript
116
-
117
- > .forEach
118
-
119
- > ```
120
-
121
-
122
-
123
- 左辺のオブジェクトのforEachプロパティを参照する。
124
-
125
-
126
-
127
- > ```JavaScript
128
-
129
- > (y => {
130
-
131
- > console.log(`${y}: ${x[y]}`);
132
-
133
- > });
134
-
135
- > ```
136
-
137
-
138
-
139
- [アロー関数](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions)を定義する。
140
-
141
- アロー関数の中身はy引数と、xオブジェクトのyプロパティにアクセスし[テンプレート文字列](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/template_strings)で文字列に変換したものを画面出力する。
142
-
143
-
144
-
145
- ---
146
-
147
-
148
-
149
- 答え合わせ
150
-
151
-
152
-
153
- > ①定数xに対して、「a: 1」と「b: 2」の二つのプロパティをオブジェクトとして代入。
154
-
155
-
156
-
157
- 日本語の問題で「オブジェクトとして代入」は意味不明になってます。
158
-
159
- 主体となる文章は「定数xにオブジェクトを代入」で、プロパティの説明等は修飾と捉えるべきです。
160
-
161
-
162
-
163
- > ②オブジェクトxからKeyのデータ値(a, b)を取ってくるよう設定。
164
-
165
-
166
-
167
- 模範解答は少々意地悪でしたね。
168
-
169
- ですが「データ値(a, b)を取ってくる」では意味不明です。
170
-
171
- [Object.keys]((https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys))は引数のオブジェクトが所持しているプロパティ名だけをピックアップして新しい配列を作るものです。
172
-
173
- なのでコードで書けば`["a", "b"]`が戻り値として返ってきます。
174
-
175
-
176
-
177
- これらの情報はaやbのプロパティの実際の値(1や2)が捨てられてしまっています。
178
-
179
- なので「プロパティ名の配列に変換する」などという表現を使うべきでしょう。
180
-
181
-
182
-
183
- > ③配列(Object.keys(x))から要素を一つずつ取ってくるよう設定。
184
-
185
-
186
-
187
187
  同じく模範解答が意地悪でしたね。
188
188
 
189
189
  `Object.keys(x).forEach(fn)`と一息に言った場合と、
@@ -192,6 +192,22 @@
192
192
 
193
193
 
194
194
 
195
+ JavaScriptではプロパティとメソッドは紙一重の存在です。
196
+
197
+ オブジェクトのプロパティに関数を代入した場合のみメソッドとして取り扱い、その他の値が入っている場合はプロパティと呼びます。
198
+
199
+ 関数やメソッドを実行するにはお尻に丸括弧を付けることで実行が可能です。
200
+
201
+
202
+
203
+ Object.keysの実行結果はArrayに決まっているので、
204
+
205
+ 決め打ちでforEachプロパティを見に行けば関数が入っている(メソッドとわかる)に決まっているのですが、
206
+
207
+ 文脈をそこで切るとプロパティかメソッドかの情報がシュレディンガーの猫のように隠されてしまいます。
208
+
209
+
210
+
195
211
  また[.forEach](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)は取ってくるものではありません。
196
212
 
197
213
  「取ってくる」は戻り値を利用することを強く意識させるので表現としては不適切です。
@@ -231,3 +247,17 @@
231
247
  「オブジェクトxのKeyのデータ値」は駄目、これはxのプロパティ名です。
232
248
 
233
249
  「定数xの配列数」ってなんやねん、お前1か2かの数値やろ。
250
+
251
+
252
+
253
+ また、日本語で説明したいなら目的を書いたほうが良いでしょう。
254
+
255
+ 説明するべき目的は「定数xのプロパティ名、対応する値を画面表示したい」のはずです。
256
+
257
+
258
+
259
+ テンプレート文字列という言葉を使いたいだけの小学生みたいな説明文になってしまいます。
260
+
261
+ 一目で分かる文章にしたければ、「文字列を作って画面出力を行う」などと簡素に書いて、
262
+
263
+ 次の行で詳細に説明するなどの工夫が必要です。