2011-01-14 5 views
0

Я один класс javasctipc ... Назовём его X.проблема с ООП 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

Как вы это сделаете на любом другом языке OO? – Pointy

+0

Хммэ ... я тоже начал думать об этом ... а потом пришел к решению, мне не нужно это делать вообще: P спасибо всем, кто ответил :) –

ответ

2

Рассмотрите возможность передачи экземпляра X "класса" в конструктор ChartClass.

var y = new ChartClass(this); 

После хранить ссылку на это прошло (это ваш объект MyClass), вы можете вызывать его методы изнутри ChartClass позже.

0

Путь у вас есть это написано сейчас, myClass является глобальным (так как это не вар), так что вы можете просто сделать

myClass.someMethod

Это только предположение. Я могу предоставить больше помощи, но я не уверен, в чем проблема. Возможно, ваш ответ на это поможет мне дать лучший ответ.

1

Вы можете вызывать методы прототипа непосредственно, не требуя экземпляр, и указать область использования:

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

Но я бы вопрос, почему у вас есть метод класса, который не требует контекста проиллюстрированного объекта, почему бы просто не сделать его глобальной функцией?

Смежные вопросы