0

drawメソッドとを含むチャート オブジェクトがありupdateます。この(動作していない) fiddle を参照してください

drawオブジェクトのプロパティで多くのことを行い、最後にグラフを描画します。この時点で、update処理されたすべてのデータdrawがそこにあるため、関数を定義できます。updateただし、スコープ外から呼び出すことはできません。

updateメソッドを完全に別のメソッドとして定義して、オブジェクトの外部から呼び出すことができますが、メソッド内のデータを参照できるようにするにはどうすればよいdrawですか?

更新:準擬似コードを投稿しました

4

4 に答える 4

3

おそらくこのように:

function MyChart(x,y){

   this.draw = function(){
      console.log('draw chart using variables x:' + x + ' y:' + y);

      return {
          update: function(){
               console.log('update chart using variables x:' + x + ' y:' + y);
          }
      }
   }
}

利用方法:

 var chart = new MyChart(123,987);
 var drawResult = chart.draw();
 drawResult.update();

実例: http: //jsfiddle.net/c9TeU/

于 2013-01-25T09:02:30.303 に答える
1
function update(obj) {
}

var obj = {
    function draw() {
        update(this); // works
    }
};

Javascript関数と関数スコープ、および字句スコープについて読むことをお勧めします。

于 2013-01-25T09:00:25.120 に答える
0

あなたは私たちに多くの情報を与えないので、私はあなたが欲しいものを推測しようとします。私はあなたがこれを望んでいると思います:

var updateFunction = function(){
   update();
};

return updateFunction();

ただし、直接return update;JavaScriptで関数を変数に格納できるため、スコープ外に変数を渡すことができる場合は、関数を渡すこともできます。

于 2013-01-25T09:00:35.600 に答える
0

次のようなことができます:

var TestObject = function () {
    var a, b;
    this.draw = function (aVal, bVal) {
        a = aVal;
        b = bVal;
    }
    this.update = function () {
        console.info("a = " + a + " | b = " + b);
    }
}

次に、次のように呼び出すことができます。

var obj = new TestObject();
obj.draw(3, 4);
obj.update();

jsfiddle at - http://jsfiddle.net/poonia/XAm52/

于 2013-01-25T09:25:49.170 に答える