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

回答編集履歴

1

文末を追加

2020/04/03 03:16

投稿

miyabi-sun
miyabi-sun

スコア21461

answer CHANGED
@@ -130,4 +130,15 @@
130
130
  console.log(user.name); // undefined
131
131
  ```
132
132
 
133
- しかしこの方法は関数宣言が
133
+ しかしこの方法はgetNameやgetAge等という関数を大量に生成するので、
134
+ APIのJSONを解析してuserを1000件生成しましょうとなるとメモリの消費量がヤバイことになります。
135
+
136
+ なので、メモリ消費量を気にするならば、素直にprototype変数を使ったほうがよくて、
137
+ それを綺麗な形で包んでくれるクラス構文を使ったほうが良いのです。
138
+ JavaScriptはこのオレオレクラス構文がプロジェクト毎に存在しており、時にはバグの温床になったりする程でしたからね。
139
+
140
+ プライベート変数が存在しない問題も残っていますが、
141
+
142
+ 同じくプライベート変数が存在しないPythonでは
143
+ もうプロパティの先頭文字を`_`にしてプログラミングする際は`_`で始まるプロパティを参照しないルールで実装すればよくね?
144
+ みたいな慣習なようで、JavaScriptも同様のスタイルのプロジェクトをよく見かけます。