Разница между классом и модулем

Следуйте этим простым шагам, чтобы получить ссылку на текущий исполняемый блок сценариев:

  1. Поместите некоторую случайную уникальную строку в блок сценария (должны быть уникальными / разными в каждом блоке скрипта)
  2. Итерировать результат document.getElementsByTagName ('script'), просматривая уникальную строку из каждого своего содержимого (полученное из свойства innerText / textContent).

Пример (ABCDE345678 является уникальным ID) :

<script type="text/javascript">
var A=document.getElementsByTagName('script'),i=count(A),thi$;
for(;i;thi$=A[--i])
  if((thi$.innerText||thi$.textContent).indexOf('ABCDE345678'))break;
// Now thi$ is refer to current script block
</script>

btw, для вашего случая вы можете просто использовать старомодный метод document.write () для включения другого скрипта. Поскольку вы упомянули, что DOM пока не отображается, вы можете воспользоваться тем фактом, что браузер всегда выполняет скрипт в линейной последовательности (за исключением отложенного, который будет отображаться позже), поэтому остальная часть вашего документа по-прежнему «не существует». Все, что вы пишете через document.write (), будет размещено сразу после сценария вызывающего абонента.

Пример исходной HTML-страницы :

<!doctype html>
<html><head>
<script src="script.js"></script>
<script src="otherscript.js"></script>
<body>anything</body></html>

Содержание script.js :

document.write('<script src="inserted.js"></script>');

После визуализации структура DOM станет:

HEAD
  SCRIPT script.js
  SCRIPT inserted.js
  SCRIPT otherscript.js
BODY
420
задан nbro 20 August 2017 в 23:35
поделиться

2 ответа

Первый ответ хорош и дает некоторые структурные ответы, но другой подход должен думать о том, что Вы делаете. Модули об обеспечении методов, которые можно использовать через несколько классов - думают о них как "библиотеки" (как Вы видели бы в приложении для направляющих). Классы об объектах; модули о функциях.

, Например, системы аутентификации и авторизации являются хорошими примерами модулей. Работа систем аутентификации через несколько классов уровня приложения (пользователи аутентифицируются, сессии, справляется с аутентификацией, много других классов будет действовать по-другому на основе подлинного состояния), таким образом, действие систем аутентификации как общие API.

Вы могли бы также использовать модуль при совместном использовании методов через несколько приложений (снова, модель библиотеки хороша здесь).

386
ответ дан scottru 20 August 2017 в 23:35
поделиться

В основном модуль нельзя инстанцировать. Когда класс включает модуль, суперкласс прокси сгенерирован, который обеспечивает доступ ко всем методам модуля, а также методам класса.

модуль А может быть включен несколькими классами. Модули не могут быть наследованы, но эта "mixin" модель обеспечивает полезный тип "нескольких inheritrance". Пуристы OO не согласятся с тем оператором, но не позволяют чистоте помешать получению сделанного задания.

<час>

(Этот ответ, первоначально связанный с http://www.rubycentral.com/pickaxe/classes.html, но та ссылка и ее домен, больше не активен.)

39
ответ дан Alan W. Smith 20 August 2017 в 23:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: