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) – 要使用的备用脚本加载器对象。