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

質問編集履歴

2

一部文言追加修正

2018/01/02 05:27

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -43,6 +43,7 @@
43
43
 
44
44
  自身で上手く言語化できませんでしたが、言葉をお借りするなら、
45
45
  「複数の関数 ( メソッド? ) で一つのオブジェクトを使いたい」という目的に近いです。
46
+
46
47
  ただ、必要なメソッドを必要な分だけ、そのメソッド内でオブジェクト化したいのです。
47
48
 
48
49
  現状のコードは、下記のようになっています。
@@ -102,10 +103,13 @@
102
103
  しかし、このコードだと、methodBはメソッドA1、メソッドA2しか使わないにも関わらず、
103
104
  メソッドA3も使おうと思えば使えてしまいます。
104
105
  同様に、methodCもメソッドA1が使えてしまいます。
105
- (もっと言えば、何だか`$(function(){...});`も分割できない?って思ってしまいます……)
106
106
 
107
+ 今回は、メソッドが3つの場合を挙げましたが、これが5個、10個……になってくると、
108
+ どこで何を使っているのかがかなり分かりにくくなってしまうので、
109
+ このコードの書き方は問題ありそうだなあ……と思えてきたため、質問いたしました。
110
+
107
111
  それぞれのメソッドで、必要な分だけオブジェクト化して使用したいと考えています。
108
- そこで、構造的に、どのように記述すればいいのかが分かりません(´・ω・`)
112
+ しかし、構造的に、どのように記述すればいいのかが分かりません(´・ω・`)
109
113
 
110
114
  今度は、そこそこ質問の意図が明確になったような気がします……が、曖昧な箇所等あれば随時追記します。
111
115
  ご教示のほど、よろしくお願いいたします。

1

質問の意図を明瞭化、質問内容を大幅加筆

2018/01/02 05:26

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -34,4 +34,78 @@
34
34
  「いや、それならいっそのこと`num`の変数外に出しちゃったほうが早いじゃん!」てなってます(´・ω・`)
35
35
 
36
36
  かなり漠然とした質問ではありますが、どのように書けばオブジェクト指向っぽくmethodCで値を取得できますか?
37
+ ご教示のほど、よろしくお願いいたします。
38
+
39
+ ---
40
+ 追記:
41
+ 迅速な回答ありがとうございます。
42
+ 回答欄でもご指摘をいただきましたが、質問内容が漠然としすぎでしたので、追記します。
43
+
44
+ 自身で上手く言語化できませんでしたが、言葉をお借りするなら、
45
+ 「複数の関数 ( メソッド? ) で一つのオブジェクトを使いたい」という目的に近いです。
46
+ ただ、必要なメソッドを必要な分だけ、そのメソッド内でオブジェクト化したいのです。
47
+
48
+ 現状のコードは、下記のようになっています。
49
+ ```JavaScript
50
+ $(function(){
51
+
52
+ var a = new methodA1();
53
+ var b = new methodA2();
54
+ var c = new methodA3();
55
+
56
+ methodB();
57
+ methodC();
58
+ methodD();
59
+
60
+ // numの変数を保持したり取得したりするメソッド
61
+ function methodA1() {
62
+ var _num;
63
+ this.setNumber = function(num) { _num = num; }
64
+ this.getNumber = function() { return _num; }
65
+ }
66
+
67
+ // fooの変数を保持したり取得したりするメソッド
68
+ function methodA2() {
69
+ var _foo;
70
+ this.setFoo = function(foo) { _foo= foo; }
71
+ this.getFoo = function() { return _foo; }
72
+ }
73
+
74
+ // barの変数を保持したり取得したりするメソッド
75
+ function methodA3() {
76
+ var _bar;
77
+ this.setBar = function(bar) { _bar = bar; }
78
+ this.getBar = function() { return _bar; }
79
+ }
80
+
81
+ // いろんな値を設定する[ここではメソッドA1、メソッドA2だけ使いたい]
82
+ function methodB() {
83
+ a.setNumber(100);
84
+ b.setFoo("Foo");
85
+ }
86
+
87
+ // いろんな値を設定する[ここではメソッドA2、メソッドA3だけ使いたい]
88
+ function methodC() {
89
+ b.setFoo("Foo");
90
+ c.setBar("Bar");
91
+ }
92
+
93
+ // methodA1~A3の処理を行った後、変更されたnumの値を取得したい
94
+ function methodD() {
95
+ console.log(a.getNumber()); // 出力:100
96
+ console.log(b.getFoo()); // 出力:Foo
97
+ console.log(c.getBar()); // 出力:Bar
98
+ }
99
+ });
100
+ ```
101
+
102
+ しかし、このコードだと、methodBはメソッドA1、メソッドA2しか使わないにも関わらず、
103
+ メソッドA3も使おうと思えば使えてしまいます。
104
+ 同様に、methodCもメソッドA1が使えてしまいます。
105
+ (もっと言えば、何だか`$(function(){...});`も分割できない?って思ってしまいます……)
106
+
107
+ それぞれのメソッドで、必要な分だけオブジェクト化して使用したいと考えています。
108
+ そこで、構造的に、どのように記述すればいいのかが分かりません(´・ω・`)
109
+
110
+ 今度は、そこそこ質問の意図が明確になったような気がします……が、曖昧な箇所等あれば随時追記します。
37
111
  ご教示のほど、よろしくお願いいたします。