我有一个图表对象,带有方法draw
和update
. 看到这个(非工作)小提琴。
draw
对对象的属性做了很多事情,最后绘制了一个图表。在这一点上,我可以定义一个update
函数,因为所有被处理的数据都在draw
那里。但是我不能update
从范围外打电话。
如何将update
方法定义为完全独立的方法,以便我可以从对象外部调用它,但它是否能够引用draw
方法内的数据?
更新:我发布了一些半伪代码。
我有一个图表对象,带有方法draw
和update
. 看到这个(非工作)小提琴。
draw
对对象的属性做了很多事情,最后绘制了一个图表。在这一点上,我可以定义一个update
函数,因为所有被处理的数据都在draw
那里。但是我不能update
从范围外打电话。
如何将update
方法定义为完全独立的方法,以便我可以从对象外部调用它,但它是否能够引用draw
方法内的数据?
更新:我发布了一些半伪代码。
也许像这样:
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/
由于您没有向我们提供太多信息,因此我将尝试猜测您想要什么。我假设你想要这个:
var updateFunction = function(){
update();
};
return updateFunction();
但是你可以直接return update;
在javascript函数中存储变量,所以如果你可以将一个变量传递到范围之外你也可以传递一个函数
您可以执行以下操作:
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/