2013-01-25 78 views
0

我有一個圖表對象,與方法drawupdateSee this (non-working) fiddle如何在對象內傳遞數據?

draw做了很多事情與對象的屬性,並在年底,繪製圖表。在這一點上,我能夠定義一個update功能,因爲所有被draw處理的數據是存在的。但是我不能從範圍之外撥打update

如何將update方法定義爲完全獨立的方法,以便我可以從對象外調用它,但是它能夠在draw方法中引用數據嗎?

更新:I've posted some semi-pseudo code

+2

請張貼一些代碼。 – elclanrs

+0

一些例子會更好。你可以發佈一些代碼片段 – karthick

回答

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/

+0

很棒!我遇到了麻煩,從對象(我使用的Ajax響應)返回一個值,所以我結束了設定的返回值作爲我的對象上的另一個屬性 - 但同樣的想法。再次感謝! –

0

既然你不給我們太多的信息,我會嘗試猜測你想要什麼。我想,你希望這樣的:

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

return updateFunction(); 

但是,你只需直接return update;在JavaScript函數可以可以存儲在變量,因此,如果你可以通過一個變量的範圍之外,您還可以傳遞一個函數

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在 - http://jsfiddle.net/poonia/XAm52/