Вызов класса объекта JavaScript, который содержится в отдельном файле .js

Я создал конструктор строк JavaScript, и я использую его со многими различными .js файлами в моем проекте.

Можно ли создать этот класс в отдельном файле .js и вызвать его из всех других скриптов, которые его инициализируют, как и файл класса С#?

Возможно ли это, или я продолжаю копировать и вставлять его в нижнюю часть каждого .js файла, который его использует?

4 ответа

Да, это не должно быть проблемой. Просто включите файлы .js в правильном порядке на ваши html-страницы.


Если вы включите файл на своей главной странице HTML вместе с другими js, вы можете использовать "класс", как хотите:

В приведенном выше примере вы можете теперь создать экземпляр нового экземпляра объекта из js1.js с кодом в js2.js. Чтобы сделать это с помощью чистого javascript, вам нужно добавить тег script в DOM или использовать AJAX для извлечения файла script и eval() его.

// Create a


Чтобы быть совершенно правильно, это не тот порядок включения, который имеет значение, а порядок выполнения кода. В большинстве случаев инструкции Andy и Segfault прекрасны, но иногда они включают файл класса до того, как его потребители недостаточно. Например, если вы используете ExtJS, и вы случайно определяете свой класс внутри обработчика onReady следующим образом:

Ext.onReady(function() {
 myClass = ...
}.bind(this));

то он не будет выполнен к моменту, когда ваш второй файл src будет включен в страницу и будет выполнен.

Я знаю, пример немного надуманный:), но просто убедитесь, что ваш код выполнен в правильном порядке, а не только в правильном порядке.


Я столкнулся с этим вопросом, и я хотел добавить что-то (чего, вероятно, не было несколько лет назад).

Даже подумал, что вы можете добавить каждый script к вашему "index.html", это не очень красивая практика (imho). Особенно если вы считаете, что можете написать расширение (~ framework). Вы не хотите раздражать пользователя кучей script тегов, которые он должен добавить в свой код. То, что вам нужно, - это одна строка:

licensed under cc by-sa 3.0 with attribution.