2011-01-14 136 views
0

我有一个javasctipc类......让我们把它叫做X.问题OOP的Javascript

myClass = new X(bunc, of, stuff); 

那么我喜欢的方法:

X.prototype.drawTripOnMap = function(request) { 
    ... 
    var y = new ChartClass(); 
    //or this.chart = new ChartClass(): 
    y.drawchart(data, options, etc); 
    ... 
} 

现在我不想创建X的新实例 - 我如何在ChartClass.drawchart方法内调用myClass方法?

给你一些关于我的问题的信息 - 即时通讯编写纯JavaScript类处理一堆OpenLayer的东西。我的网站使用prototype.js atm,但我们想摆脱这一点。我们不能马上做,所以即时编写我的课程,以便我可以轻松地交换处理dom,事件或ajax调用的部分。现在我在地图下面绘制图表,我需要处理图表点击事件。当我点击图表时,某些事情需要在地图上发生......反之亦然 - 因为图表可以是myClass的子类(上图中的this.chart)。

soo ...怎么样?

艾伦

+0

你会怎么做在任何其他面向对象语言? – Pointy 2011-01-14 14:36:53

回答

2

考虑将instanceof X“class”传递给ChartClass构造函数。

var y = new ChartClass(this); 

已经存储了对this的引用(这是你的myClass对象),你可以稍后在ChartClass中调用它的方法。

0

你有它编写的方式,现在,myClass是一个全球性的(因为没有一个VAR),所以你可以做

myClass.someMethod

这只是一个猜测。我可以提供更多的帮助,但我不确定问题究竟是什么。也许你对此的回应将有助于指导我提供更好的答案。

1

你可以调用原型方法直接而不需要一个实例,并使用指定范围:

X.prototype.drawTripOnMap.apply(null, [request]); 

但我会问你为什么不要求一个实例化对象的上下文类方法,为什么不把它变成一个全球性的功能呢?