[過去ログ] + JavaScript(ECMAScript)質問用スレッド vol.123 + [無断転載禁止]©2ch.net (551レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
121
(4): デフォルトの名無しさん [] 2021/02/17(水) 13:56:56.26 ID:bo7LOn7s(1) AAS
クロージャーつかって関数内の静的変数つくるテクニックあるじゃん
あれって無駄にややこしくない?
クロージャー使わないでオブジェクト使えばいいんじゃないか?
静的変数と関数を両方オブジェクトのメンバーにすれば
122: デフォルトの名無しさん [age] 2021/02/17(水) 14:28:58.61 ID:ty0uudwM(1) AAS
>>121
それでどうやってオブジェクトでprivateにするんだ?
123: デフォルトの名無しさん [sage] 2021/02/17(水) 16:24:24.66 ID:xcIRk5Ik(1) AAS
>>121
> 静的変数と関数を両方オブジェクトのメンバーにすれば
それでも問題ないが、指摘されているようにprivateには出来ない。
ただしJava流のprivateは最早手段が目的化しているし、
俺も当初は戸惑ったが、実際問題として全部publicでも何ら問題はない。
だからチームで方針を決めればいいだけ。
君だけで完結しているのなら、その方針でも困ることはないはず。

> あれって無駄にややこしくない?
これは違う。クロージャの方が簡単だし速いからそうしてる。
あと、このメソッドからのみ参照可能とかが簡単に出来るのも大きい。(これは長期的にはものすごく重要)
よって、君の方式のメリットが全くないから誰も使ってないだけ。

ちなみにJSの場合はfunctionもオブジェクトなのでプロパティを生やしてそこに格納も出来るが、
これもメリットがないから誰もやらないだけ。

なおかなり長期にメンテすると、当初privateだった物をpublic的にする必要が出てきたりする。
この場合は普通は君が言ってるような方法で対応することになる。
124: デフォルトの名無しさん [sage] 2021/02/17(水) 19:45:55.76 ID:cBwdq4+S(1) AAS
>>121
最初すごく分かりにくかった。
privateにすれば簡単なのに。
125
(3): デフォルトの名無しさん [sage] 2021/02/17(水) 22:01:08.47 ID:3Rkqt+9c(1) AAS
>>121
const makeCounter = (count=0) => () => count += 1
const counter = makeCounter(10)
counter() //=> 11
counter() //=> 12
counter() //=> 13

よくあるような例だけどクロージャ使わない方法でやってみて
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s