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

回答編集履歴

4

微修正

2018/05/10 17:22

投稿

set0gut1
set0gut1

スコア2413

answer CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  --------------
8
8
 
9
+ ■追記
9
10
  じゃあ正解書いちゃうと、こうです。
10
11
  requireの部分補うと`(function(foo){...})(foo)`となり、これはjqueryプラグインとかでよく見るイディオムですね。
11
12
 

3

微修正

2018/05/10 17:22

投稿

set0gut1
set0gut1

スコア2413

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

2

正解書く

2018/05/10 17:19

投稿

set0gut1
set0gut1

スコア2413

answer CHANGED
@@ -3,4 +3,57 @@
3
3
  ```javascript
4
4
  require('./method2.js')(ClassA);
5
5
 
6
+ ```
7
+
8
+ --------------
9
+
10
+ じゃあ正解書いちゃうと、こうです。
11
+ jqueryプラグインとかでよく見るイディオムですね。
12
+
13
+ method2.js
14
+
15
+ ```javascript
16
+ module.exports = function (ClassA) {
17
+ function methodC() {
18
+ return 'OK';
19
+ }
20
+ function methodD() {}
21
+ ClassA.namespace("space_B").method_CD = {
22
+ methodC: methodC,
23
+ methodD: methodD
24
+ };
25
+ }
26
+ ```
27
+
28
+ main.js
29
+
30
+ ```javascript
31
+ var ClassA = (function () {
32
+ function namespace(string) { //namespace関数
33
+ var object = this;
34
+ var levels = string.split('.');
35
+ for (var i = 0, l = levels.length; i < l; i++) {
36
+ if (typeof object[levels[i]] === 'undefined') {
37
+ object[levels[i]] = {};
38
+ } object = object[levels[i]];
39
+ }
40
+ return object;
41
+ }
42
+ return {
43
+ namespace: namespace
44
+ };
45
+ }());
46
+ module.exports = ClassA;
47
+
48
+ //メソッド1
49
+ (function () { //クラス名の追加、削除
50
+ var space_A = ClassA.namespace("space_A");
51
+ function methodA() {}
52
+ function methodB() {}
53
+ space_A.methodA = methodA;
54
+ space_A.methodB = methodB;
55
+ }());
56
+
57
+ //メソッド2
58
+ require('./method2')(ClassA);
6
59
  ```

1

追記

2018/05/10 17:18

投稿

set0gut1
set0gut1

スコア2413

answer CHANGED
@@ -1,4 +1,4 @@
1
- たぶん正解はこの形です。
1
+ たぶん正解はこの形です。(あえて断片的に書きます)
2
2
 
3
3
  ```javascript
4
4
  require('./method2.js')(ClassA);