回答編集履歴

7

a

2018/05/18 11:10

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -251,3 +251,43 @@
251
251
  console.log(obj.element) // 書き換わってしまう
252
252
 
253
253
  ```
254
+
255
+
256
+
257
+ これだと上書き出来てしまうので、上書き出来ない版も追加。
258
+
259
+
260
+
261
+ ```
262
+
263
+ var obj = {
264
+
265
+ get element() {
266
+
267
+ console.log('1度だけ呼ばれる')
268
+
269
+ delete this.element;
270
+
271
+
272
+
273
+ Object.defineProperty(this, "element", { value: 'キャッシュ対象', writable: false, configurable: true})
274
+
275
+
276
+
277
+ return this.element;
278
+
279
+ }
280
+
281
+ }
282
+
283
+
284
+
285
+ console.log(obj.element) // 初回アクセス
286
+
287
+ console.log(obj.element) // 2回目以降はキャッシュが使われる
288
+
289
+ obj.element = 'hoge';
290
+
291
+ console.log(obj.element) // 書き換わらない
292
+
293
+ ```

6

a

2018/05/18 11:10

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -215,3 +215,39 @@
215
215
 
216
216
 
217
217
  → [https://codepen.io/anon/pen/pVQOXd](https://codepen.io/anon/pen/pVQOXd)
218
+
219
+
220
+
221
+ # 追記2
222
+
223
+
224
+
225
+
226
+
227
+ ```
228
+
229
+ var obj = {
230
+
231
+ get element() {
232
+
233
+ console.log('1度だけ呼ばれる')
234
+
235
+ delete this.element;
236
+
237
+ return this.element = 'キャッシュ対象';
238
+
239
+ }
240
+
241
+ }
242
+
243
+
244
+
245
+ console.log(obj.element) // 初回アクセス
246
+
247
+ console.log(obj.element) // 2回目以降はキャッシュが使われる
248
+
249
+ obj.element = 'hoge';
250
+
251
+ console.log(obj.element) // 書き換わってしまう
252
+
253
+ ```

5

https://codepen.io/anon/pen/pVQOXd

2018/05/18 11:08

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -211,3 +211,7 @@
211
211
 
212
212
 
213
213
  後からクラス名が追加される場合でも大丈夫。
214
+
215
+
216
+
217
+ → [https://codepen.io/anon/pen/pVQOXd](https://codepen.io/anon/pen/pVQOXd)

4

a

2018/05/18 04:43

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -135,3 +135,79 @@
135
135
 
136
136
 
137
137
  [https://github.com/mmikowski/spa/blob/master/listings/ch05_06/5.2/js/spa.chat.js#L94](https://github.com/mmikowski/spa/blob/master/listings/ch05_06/5.2/js/spa.chat.js#L94)
138
+
139
+
140
+
141
+ # 追記(変更された質問内容に合わせた回答)
142
+
143
+
144
+
145
+ コメント欄で`Lhankor_Mhy`さんが書いておられた`lazy getters`をベースに書いてみました。
146
+
147
+ [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/get#Smart_self-overwriting_lazy_getters](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/get#Smart_self-overwriting_lazy_getters)
148
+
149
+ ```
150
+
151
+ var obj = {
152
+
153
+ get element() {
154
+
155
+ console.log('1度だけ呼ばれる')
156
+
157
+ delete this.element;
158
+
159
+ return this.element = 'キャッシュ対象';
160
+
161
+ }
162
+
163
+ }
164
+
165
+
166
+
167
+ console.log(obj.element) // 初回アクセス
168
+
169
+ console.log(obj.element) // 2回目以降はキャッシュが使われる
170
+
171
+ ```
172
+
173
+
174
+
175
+ まずは、簡単なコードで動作確認。
176
+
177
+
178
+
179
+ ```
180
+
181
+ var selectors = {
182
+
183
+ $slider: $('#slider'),
184
+
185
+ get $items() {
186
+
187
+ delete this.$items;
188
+
189
+ this.$items = this.$slider.find('.item');
190
+
191
+ return this.$items;
192
+
193
+ }
194
+
195
+ }
196
+
197
+
198
+
199
+ selectors.$slider.children().each(function(){
200
+
201
+ $(this).addClass('item');
202
+
203
+ });
204
+
205
+
206
+
207
+ selectors.$items.first().text('hello')
208
+
209
+ ```
210
+
211
+
212
+
213
+ 後からクラス名が追加される場合でも大丈夫。

3

a

2018/05/18 04:32

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -1,3 +1,15 @@
1
+ # 注釈
2
+
3
+ **質問内容が編集され当初の質問と前提が変わっているため、
4
+
5
+ 以下、現在の質問内容に対する回答としては成立していません。**
6
+
7
+
8
+
9
+ # 編集前の質問内容に対する回答
10
+
11
+
12
+
1
13
  > クラス名を毎回書くのがなんかしっくり来てないです。
2
14
 
3
15
  いざ、定数のように扱おうと思うと、

2

a

2018/05/18 04:04

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -92,7 +92,7 @@
92
92
 
93
93
 
94
94
 
95
- その上で、例えば、少し古い本ですが「[シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA](https://www.amazon.co.jp/dp/4873116732)」のコードを参考にみてみると、以下のようにjQueryセクレターを管理しています。
95
+ その上で、例えば、少し古い本ですが「[シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA](https://www.amazon.co.jp/dp/4873116732)」のコードをみてみると、以下のようにjQueryセクレターを管理していますので参考にしてみるのも良いかもしれません
96
96
 
97
97
 
98
98
 

1

a

2018/05/17 14:54

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
 
87
- というかたちになり、パフォーマンスの
87
+ というかたちになり、パフォーマンスの向上に繋がります。
88
88
 
89
89
 
90
90