Это не может быть проблема заказа и проблема упаковки. Обертывание чего-либо с помощью функции, которая запускается немедленно, не влияет на порядок, только на область.
И если titles
определено в другом файле, тогда область действия class Manager
не имеет значения. Итак, это вопрос заказа. Как определяется titles
?
Если бы мне пришлось отложить запуск какого-либо кода до полной загрузки всей страницы ($ (document.ready ()), я мог бы быть уверен, что все файлы javascript были полностью загружены до того, как какой-либо код фактически запустился.
Не совсем. $(document).ready()
(обратите внимание на круглые скобки - функции document.ready
нет ...) задерживает выполнение функции до тех пор, пока не будет загружен весь HTML-код страницы, что не означает, что загружен весь JavaScript. Вот хорошие новости: с точки зрения кода JavaScript, не имеет значения, были ли загружены другие файлы JavaScript, потому что все они работают по порядку. ( Примечание: Здесь я предполагаю, что вы не делаете ничего сложного, например, добавление дополнительных тегов <script>
из своего кода JavaScript.) Так что, пока у вас есть
<script src="titles.js"></script>
<script src="Manager.js"></script>
Вы можете быть уверены, что Manager.js
будет запущен только после titles.js
.
Внимание! Использование $(document).ready()
для заказа кода JS является распространенной ошибкой, которая может привести к путанице! Если ваш HTML выглядел следующим образом
<script src="Manager.js"></script>
<script src="titles.js"></script>
, где titles.js
создает глобальный объект с именем titles
, а Manager.js
выглядит следующим образом
$(document).ready ->
console.log titles
тогда вывод будет иногда будет titles
, а иногда будет undefined
. Зачем? Потому что, как документы говорят,
Если .ready()
вызывается после инициализации DOM, новый переданный обработчик будет выполнен немедленно.
И, возможно, DOM уже инициализирован при запуске первого файла JS! (На практике это будет происходить, если браузер кэширует HTML-код страницы.)
Итак, будь проще. Просто загрузите ваши скрипты в правильном порядке. Помните, что для практических целей ваши сценарии объединяются браузером по порядку в один файл JS.