2011-01-14 65 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]); 

但我會問你爲什麼不要求一個實例化對象的上下文類方法,爲什麼不把它變成一個全球性的功能呢?