Найдите что-то под названием «Модули общего кода Javascript» или JSM.
Основные документы здесь:
https://developer.mozilla.org/En/Using_JavaScript_code_modules
Каждый файл .js в вашем дополнении, которому требуется общая память, откроется со следующей строкой:
Components.utils.import("resource://xxxxxxxx/modules/[yourFilenameHere].jsm", com.myFirefoxAddon.shared);
Приведенная выше строка открывает [yourFilenameHere] .jsm и загружает экспортированные функции и переменные *1013* (см. Ниже) в объект com.myFirefoxAddon.shared. Каждый экземпляр этого загруженного объекта будет указывать на один и тот же экземпляр в памяти.
Обратите внимание, что если вы хотите иметь надежду на то, что ваше дополнение будет проходить модерацию, вам нужно будет написать весь свой код в объекте типа com.myFirefoxAddon. *, Так как новобранцы в AMO препятствуют утверждению надстроек, Уважать глобальное пространство имен
Самым большим предупреждением для JSM является то, что вам нужно вручную экспортировать каждую функцию, которую вы хотите, чтобы она была доступна, для остальной части вашего кода ... поскольку JS не поддерживает общедоступный / закрытый тип, это кажется мне своего рода «публичная» поддержка бедного человека ... в любом случае вам нужно будет создать массив EXPORTED_SYMBOLS где-нибудь в вашем файле JSM и назвать каждую функцию или объект, который вы хотите экспортировать, например:
var EXPORTED_SYMBOLS = [
/* CONSTANTS */
"SERVER_DEBUG",
"SERVER_RELEASE",
"LIST_COUNTRIES",
"LIST_TERRITORIES_NOEX",
/* GLOBAL VARIABLES */
/* note: primitive type variables need to be stored in the globals object */
"urlTable",
"globals",
/* INTERFACES */
"iStrSet",
/* FUNCTIONS */
"globalStartup",
/* OBJECTS */
"thinger",
"myObject"
]