Найдите что-нибудь под названием «Общие модули кода 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 и загружает его экспортированные (см. ниже) функции и переменные в объект 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"
]
person
Tom Corelis
schedule
08.01.2010