Esta página está traduciéndose a partir del artículo Components.utils.import, razón por la cual puede haber algunos errores sintácticos o partes sin traducir. Puedes colaborar continuando con la traducción
Este artículo cubre características introducidas en Firefox 3
Este método fue introducido en Firefox 3 y es usado para compartir código entre diferentes alcances(scopes) de forma sencilla. Por ejemplo, puedes importar XPCOMUtils.jsm para evitar copiar y pegar grandes porciones comunes de código de registración de componentes XPCOM en tus archivos de compomentes.
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Para documentación mira Usando módulos de código JavaScript.
Las diferencias con mozIJSSubScriptLoader
son:
Components.utils.import evalua el código de cada módulo sólo una vez, en su propio alcance(scope).Por ejemplo:
var scope1 = {}, scope2 = {};
Components.utils.import("resource://gre/modules/JSON.jsm", scope1);
Components.utils.import("resource://gre/modules/JSON.jsm", scope2);
assert(scope2.XPCOMUtils === scope1.XPCOMUtils);
...retorna true, mientras que:
var someURL = "resource://gre/modules/JSON.jsm"; var obj1 = {}, obj2 = {}; var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] .getService(Components.interfaces.mozIJSSubScriptLoader); loader.loadSubScript(someURL, obj1); loader.loadSubScript(someURL, obj2); assert(obj2 === obj1);
...retorna false.
Esto significa que Components.utils.import es más apropiado para compartir código (y datos?) eficientemente entre scripts JS corriendo en diferentes alcances (scopes).
import sólo acepta resource: y file: URIs.js/src/xpconnect/idl/xpccomponents.idl
js/src/xpconnect/tests/unit/
Page last modified 23:52, 9 Jun 2008 by Mgjbot