XPCOMUtils 模块¶
XPCOMUtils 是一个实用程序类,位于 resource://gre/modules/XPCOMUtils.sys.mjs。
它的名称有点令人困惑,因为它本身并不存在于 XPCOM 中,但它提供了一些实用程序,帮助 JS 使用者更方便地使用 sys.mjs
模块和 XPCOM 服务/接口。
- class XPCOMUtils()¶
XPCOMUtils 包含一些辅助函数,使 JS 使用者能够更方便地延迟加载脚本、模块、首选项和 XPCOM 服务。
- static XPCOMUtils.defineConstant(aObj, aName, aValue)¶
在对象上定义一个不可写的属性。
- 参数:
aObj (object) – 要在其上定义属性的对象。
aName (string) – 要在 aObject 上定义的不可写属性的名称。
aValue (any) – 不可写属性的值。
- static XPCOMUtils.defineLazyGetter(aObject, aName, aLambda)¶
已弃用!
请改用 ChromeUtils.defineLazyGetter。
在指定的对象上定义一个 getter,该 getter 将在首次使用时创建。
- 参数:
aObject (object) – 要在其上定义延迟 getter 的对象。
aName (string) – 要在 aObject 上定义的 getter 的名称。
aLambda (function) – 一个函数,返回 getter 应该返回的内容。此函数只会被调用一次。
- static XPCOMUtils.defineLazyGlobalGetters(aObject, aNames)¶
为给定对象上的每个给定全局名称定义一个 getter 属性,作为 Cu.importGlobalProperties 接受的名称。这些属性被导入到共享的 JSM 模块全局中,然后复制到给定的对象上,无论该对象属于哪个全局。
- 参数:
aObject (object) – 要在其上定义属性的对象。
aNames (Array.<string>) – 要定义的全局属性列表。
- static XPCOMUtils.defineLazyModuleGetters(aObject, aModules)¶
为给定对象中的每个属性定义一个延迟模块 getter。
- 参数:
aObject (object) – 要在其上定义延迟 getter 的对象。
aModules (object) – 一个对象,其中每个属性对应一个要导入的模块属性,属性名称是导入的符号的名称,值是模块 URI。
- static XPCOMUtils.defineLazyPreferenceGetter(aObject, aName, aPreference, aDefaultPrefValue, aOnUpdate, aTransform)¶
为首选项值定义一个 getter 属性。首次访问该属性时读取首选项,然后使用首选项观察器保持最新。
- 参数:
aObject (object) – 要在其上定义延迟 getter 的对象。
aName (string) – 要在 aObject 上定义的 getter 属性的名称。
aPreference (string) – 要读取的首选项的名称。
aDefaultPrefValue (any) – 如果未定义首选项,则使用默认值。这是首选项的默认值,在应用 aTransform 之前。
aOnUpdate (function) – 更新时调用的函数。接收参数 (aPreference, previousValue, newValue)
aTransform (function) – 一个可选的函数,用于转换值。如果提供,则此函数接收新的首选项值作为参数,其返回值由 getter 使用。
- static XPCOMUtils.defineLazyScriptGetter(aObject, aNames, aResource)¶
为脚本定义一个 getter 属性。脚本在首次使用之前不会加载。
- 参数:
aObject (object) – 要在其上定义延迟 getter 的对象。
aNames (string|Array.<string>) – 要在 aObject 上为脚本定义的 getter 的名称。如果脚本只导出一个符号,则可以是字符串;如果脚本可以从多个不同的符号中首次访问,则可以是字符串数组。
aResource (string) – 用于获取脚本的 URL。
- static XPCOMUtils.defineLazyServiceGetter(aObject, aName, aContract, aInterfaceName)¶
为服务定义一个 getter 属性。服务在首次使用之前不会获取。
- 参数:
aObject (object) – 要在其上定义延迟 getter 的对象。
aName (string) – 要在 aObject 上为服务定义的 getter 的名称。
aContract (string) – 用于获取服务的契约。
aInterfaceName (string) – 要查询服务的接口的名称。
- static XPCOMUtils.defineLazyServiceGetters(aObject, aServices)¶
为给定对象中的每个属性定义一个延迟服务 getter。
- 参数:
aObject (object) – 要在其上定义延迟 getter 的对象。
aServices (object) – 一个对象,其中每个属性对应一个要导入的服务,属性名称是要定义的符号的名称,值是一个包含契约 ID 和(可选)服务接口名称的 1 或 2 元素数组,作为传递给 defineLazyServiceGetter 的参数。
- static XPCOMUtils.overrideScriptLoaderForTests(aObject)¶
覆盖测试的脚本加载器定义,以帮助跟踪全局变量。仅应在测试中使用。
- 参数:
aObject (object) – 要使用的备用脚本加载器对象。