Вы должны войти, чтобы создавать сообщения и темы.

Классы в других параграфах

Насколько я понимаю, использование ООП изначально не подразумевается, однако...

Суть вопроса - я описываю некий класс

class JustClass {};

Данный класс расположен в одноимённом параграфе - JustClassParagraph. Далее в другом параграфе, назовём его AnotherParagraph, я хочу создать объект типа JustClass.

 

Случай первый:

Подключаю код из другого параграфа и создаю объект:

display( 'JustClassParagraph' );

val = new JustClass;

Игра не запускается.

 

Случай второй:

Создаю объект в JustClassParagraph, далее, в AnotherParagraph, вызываю соответствующий дисплей и спокойно использую объект.

 

Случай третий:

В JustClassParagraph создаю фабричную функцию (не уверен, стоит ли так называть фабричную функцию, но, раз она расположена вне класса...):

class JustClass {};

createJustClass = function() {

    return new JustClass;

};

Далее, в AnotherParagraph, дисплею нужный параграф и, вызывая фабричную функцию, создаю свой объект

display( 'JustClassParagraph' );

val = createJustClass();

Как и во втором случае, работает отлично.

 

Собственно вопросы:

  1. Что не так с первым случаем, есть ли варианты работы непосредственно с описанным мной классом из другого параграфа?
  2. Как работает display? Судя по всему, его работа отличается от include, import и т.д. из других языков, хотелось бы узнать поподробнее.

Вся проблема в том, что класс JustClass известен только в том параграфе, в котором определен (приватный). Нужно объявить глобальную переменную которая будет ссылаться на класс. В параграфе JustClassParagraph:

JustClass = class {

...

};

После этого использование класса описанное в первом случае станет возможным.

Каждый параграф суть функция. display просто вызывает эту функцию.