我有一个图表对象,方法draw
和update
。 See this (non-working) fiddle
draw
使用对象的属性做了很多事情,最后绘制了一个图表。此时,我能够定义update
函数,因为draw
处理的所有数据都在那里。但是我不能在范围之外调用update
。
如何将update
方法定义为一个完全独立的方法,以便我可以从对象外部调用它,但是它能够在draw
方法中引用数据吗?
答案 0 :(得分: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();
答案 1 :(得分:1)
function update(obj) {
}
var obj = {
function draw() {
update(this); // works
}
};
您可能希望阅读有关Javascript Functions and function scope和lexical scope。
的信息答案 2 :(得分:0)
由于你没有给我们太多信息,我会试着猜你想要什么。我想你想要这个:
var updateFunction = function(){
update();
};
return updateFunction();
但你可以直接return update;
在javascript函数中可以存储变量,所以如果你可以将一个变量传递到范围之外你也可以传递一个函数
答案 3 :(得分: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/