回答編集履歴

4

微修正

2018/05/10 17:22

投稿

set0gut1
set0gut1

スコア2413

test CHANGED
@@ -13,6 +13,8 @@
13
13
  --------------
14
14
 
15
15
 
16
+
17
+ ■追記
16
18
 
17
19
  じゃあ正解書いちゃうと、こうです。
18
20
 

3

微修正

2018/05/10 17:22

投稿

set0gut1
set0gut1

スコア2413

test CHANGED
@@ -5,8 +5,6 @@
5
5
  ```javascript
6
6
 
7
7
  require('./method2.js')(ClassA);
8
-
9
-
10
8
 
11
9
  ```
12
10
 
@@ -18,7 +16,7 @@
18
16
 
19
17
  じゃあ正解書いちゃうと、こうです。
20
18
 
21
- jqueryプラグインとかでよく見るイディオムですね。
19
+ requireの部分補うと`(function(foo){...})(foo)`となり、これはjqueryプラグインとかでよく見るイディオムですね。
22
20
 
23
21
 
24
22
 

2

正解書く

2018/05/10 17:19

投稿

set0gut1
set0gut1

スコア2413

test CHANGED
@@ -9,3 +9,109 @@
9
9
 
10
10
 
11
11
  ```
12
+
13
+
14
+
15
+ --------------
16
+
17
+
18
+
19
+ じゃあ正解書いちゃうと、こうです。
20
+
21
+ jqueryプラグインとかでよく見るイディオムですね。
22
+
23
+
24
+
25
+ method2.js
26
+
27
+
28
+
29
+ ```javascript
30
+
31
+ module.exports = function (ClassA) {
32
+
33
+ function methodC() {
34
+
35
+ return 'OK';
36
+
37
+ }
38
+
39
+ function methodD() {}
40
+
41
+ ClassA.namespace("space_B").method_CD = {
42
+
43
+ methodC: methodC,
44
+
45
+ methodD: methodD
46
+
47
+ };
48
+
49
+ }
50
+
51
+ ```
52
+
53
+
54
+
55
+ main.js
56
+
57
+
58
+
59
+ ```javascript
60
+
61
+ var ClassA = (function () {
62
+
63
+ function namespace(string) { //namespace関数
64
+
65
+ var object = this;
66
+
67
+ var levels = string.split('.');
68
+
69
+ for (var i = 0, l = levels.length; i < l; i++) {
70
+
71
+ if (typeof object[levels[i]] === 'undefined') {
72
+
73
+ object[levels[i]] = {};
74
+
75
+ } object = object[levels[i]];
76
+
77
+ }
78
+
79
+ return object;
80
+
81
+ }
82
+
83
+ return {
84
+
85
+ namespace: namespace
86
+
87
+ };
88
+
89
+ }());
90
+
91
+ module.exports = ClassA;
92
+
93
+
94
+
95
+ //メソッド1
96
+
97
+ (function () { //クラス名の追加、削除
98
+
99
+ var space_A = ClassA.namespace("space_A");
100
+
101
+ function methodA() {}
102
+
103
+ function methodB() {}
104
+
105
+ space_A.methodA = methodA;
106
+
107
+ space_A.methodB = methodB;
108
+
109
+ }());
110
+
111
+
112
+
113
+ //メソッド2
114
+
115
+ require('./method2')(ClassA);
116
+
117
+ ```

1

追記

2018/05/10 17:18

投稿

set0gut1
set0gut1

スコア2413

test CHANGED
@@ -1,4 +1,4 @@
1
- たぶん正解はこの形です。
1
+ たぶん正解はこの形です。(あえて断片的に書きます)
2
2
 
3
3
 
4
4