質問: function() { return _bar; } } // いろんな値を設定する[ここではメソッドA1、メソッドA2だけ使いたい] function methodB() { a.setNumber(100); b.setFoo("Foo"); } // いろんな値を設定する[ここではメソッドA2、メソッドA3だけ使いたい] function methodC() { b.setFoo("Foo"); c.setBar("Bar"); } // methodA1~A3の処理を行った後、変更されたnumの値を取得したい function methodD() { console.log(a.getNumber()); // 出力:100 console.log(b.getFoo()); // 出力:Foo console.log(c.getBar()); // 出力:Bar } }); ``` しかし、このコードだと、methodBはメソッドA1、メソッドA2しか使わないにも関わらず、 メソッドA3も使おうと思えば使えてしまいます。 同様に、methodCもメソッドA1が使えてしまいます。 今回は、メソッドが3つの場合を挙げましたが、これが5個、10個......になってくると、 どこで何を使っているのかがかなり分かりにくくなってしまうので、 このコードの書き方は問題ありそうだなあ......と思えてきたため、質問いたしました。 それぞれのメソッドで、必要な分だけオブジェクト化して使用したいと考えています。 しかし、構造的に、どのように記述すればいいのかが分かりません( ́・ω・`) 今度は、そこそこ質問の意図が明確になったような気がします......が、曖昧な箇所等あれば随時追記します。 ご教示のほど、よろしくお願いいたします。
回答: おそらく、やりたいことは以下のようなことでしょうか? ``` var Accessor = function(initValue) { this._value = initValue; }; Accessor.prototype.setValue = function(value) { this._value = value; }; Accessor.prototype.getValue = function() { return this._value; }; var Executor = function() { this._num = new Accessor(10); this._foo = new Accessor("foo"); this._var = new Accessor("bar"); }; Executor.prototype.execA = function() { this._num.setValue(100); this._foo.setValue("FOO"); }; Executor.prototype.execB = function() { this._foo.setValue("FOO"); this._bar.setValue("BAR"); }; Executor.prototype.execC = function() { console.log(this._num.getValue()); console.log(this._foo.getValue()); console.log(this._var.getValue()); }; var executor = new Executor(); executor.execA(); executor.execC(); ```