質問編集履歴

6

2017/10/01 08:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,7 @@
1
+ ※初期化時に渡すvalueは数字という前提です。
2
+
3
+
4
+
1
5
  ```
2
6
 
3
7
 

5

おためし

2017/10/01 08:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -121,3 +121,81 @@
121
121
 
122
122
 
123
123
  カンマ区切り用のメソッド引数に値を外から渡す書き方をしていましたが、意図していたものと違かったため、初期化時に渡される値をもとにカンマ区切りにした文字を返すように変更しました。
124
+
125
+
126
+
127
+
128
+
129
+ # 追記(2017/10/01 16:45)
130
+
131
+
132
+
133
+ ```
134
+
135
+
136
+
137
+ miyabiさんのprototype拡張コードをお借りしつつ、こんなの試しに書いてみましたが、「wrappedClass.prototype.value」は上手く行かないのですね。
138
+
139
+
140
+
141
+ class AAA {
142
+
143
+
144
+
145
+ constructor(value) {
146
+
147
+ this.value = value;
148
+
149
+ }
150
+
151
+
152
+
153
+ doSomething() {
154
+
155
+ console.log('hello');
156
+
157
+ }
158
+
159
+
160
+
161
+ }
162
+
163
+
164
+
165
+
166
+
167
+ function enhancer(wrappedClass) {
168
+
169
+
170
+
171
+ Object.defineProperty(
172
+
173
+ wrappedClass.prototype,
174
+
175
+ 'asValueSeparatedByComma',
176
+
177
+ {get: function(){return String(wrappedClass.prototype.value).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,')}}
178
+
179
+ )
180
+
181
+
182
+
183
+ return wrappedClass;
184
+
185
+
186
+
187
+ }
188
+
189
+
190
+
191
+ var enhancedClass = enhancer(AAA)
192
+
193
+
194
+
195
+ var enhancedObject = new enhancedClass(5)
196
+
197
+ console.log(enhancedObject.asValueSeparatedByComma); //undefined
198
+
199
+ enhancedObject.doSomething() //'hello'
200
+
201
+ ```

4

かえました

2017/10/01 07:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,17 +6,17 @@
6
6
 
7
7
 
8
8
 
9
- constructor() {
9
+ constructor(value) {
10
10
 
11
-
11
+ this.value = value;
12
12
 
13
13
  }
14
14
 
15
15
 
16
16
 
17
- addComma(value) {
17
+ asValueSeparatedByComma() {
18
18
 
19
-
19
+ return String(this.value).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
20
20
 
21
21
  }
22
22
 
@@ -40,17 +40,17 @@
40
40
 
41
41
 
42
42
 
43
- constructor() {
43
+ constructor(value) {
44
44
 
45
-
45
+ this.value = value;
46
46
 
47
47
  }
48
48
 
49
49
 
50
50
 
51
- addComma(value) {
51
+ asValueSeparatedByComma() {
52
52
 
53
-
53
+ return String(this.value).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,');
54
54
 
55
55
  }
56
56
 
@@ -111,3 +111,13 @@
111
111
 
112
112
 
113
113
  数字を扱うクラスを作って、それをコンポジションして使えば良いんですかね?
114
+
115
+
116
+
117
+ # 変更(2017/10/01 16:21)
118
+
119
+ カンマ区切りの処理がどういう処理か名前からわかりづらいというご指摘をmiyabiさんから受けたので、メソッド名を変更しました。
120
+
121
+
122
+
123
+ カンマ区切り用のメソッド引数に値を外から渡す書き方をしていましたが、意図していたものと違かったため、初期化時に渡される値をもとにカンマ区切りにした文字を返すように変更しました。

3

2017/10/01 07:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -90,6 +90,10 @@
90
90
 
91
91
 
92
92
 
93
+ というか、使ってるredux自体が関数型プログラミングを採用してる感じですし、その時点で関数インポートして使ってたりもしますし尚更わけわからん。
94
+
95
+
96
+
93
97
  どんな方法が良いのでしょうか!!!!
94
98
 
95
99
 

2

追記

2017/10/01 04:28

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -99,3 +99,11 @@
99
99
  [https://www.google.co.jp/search?q=ユーティリティークラス+アンチパターン
100
100
 
101
101
  ](https://www.google.co.jp/search?q=ユーティリティークラス+アンチパターン)
102
+
103
+
104
+
105
+ # 追記
106
+
107
+
108
+
109
+ 数字を扱うクラスを作って、それをコンポジションして使えば良いんですかね?

1

https://www.google.co.jp/search?q=ユーティリティークラス+アンチパターン

2017/10/01 04:04

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -91,3 +91,11 @@
91
91
 
92
92
 
93
93
  どんな方法が良いのでしょうか!!!!
94
+
95
+
96
+
97
+ # 補足
98
+
99
+ [https://www.google.co.jp/search?q=ユーティリティークラス+アンチパターン
100
+
101
+ ](https://www.google.co.jp/search?q=ユーティリティークラス+アンチパターン)