aboutsummaryrefslogtreecommitdiff
path: root/files/es/components.utils.import/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/es/components.utils.import/index.html')
-rw-r--r--files/es/components.utils.import/index.html62
1 files changed, 62 insertions, 0 deletions
diff --git a/files/es/components.utils.import/index.html b/files/es/components.utils.import/index.html
new file mode 100644
index 0000000000..66f32f06e1
--- /dev/null
+++ b/files/es/components.utils.import/index.html
@@ -0,0 +1,62 @@
+---
+title: Components.utils.import
+slug: Components.utils.import
+tags:
+ - NeedsContent
+ - XPConnect
+ - páginas_a_traducir
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.import
+---
+<p></p>
+
+<p>Este método fue introducido en <a href="es/Firefox_3_para_desarrolladores">Firefox 3</a> y es usado para compartir código entre diferentes alcances(scopes) de forma sencilla. Por ejemplo, puedes importar <a href="es/XPCOMUtils.jsm">XPCOMUtils.jsm</a> para evitar copiar y pegar grandes porciones comunes de código de registración de componentes XPCOM en tus archivos de compomentes.</p>
+
+<pre class="eval">Components.utils.import("<a class="external" rel="freelink">resource://gre/modules/XPCOMUtils.jsm</a>");
+</pre>
+
+<p>Para documentación mira <a href="es/Usando_m%c3%b3dulos_de_c%c3%b3digo_JavaScript">Usando módulos de código JavaScript</a>.</p>
+
+<h3 id="Diferencias_con_mozIJSSubScriptLoader" name="Diferencias_con_mozIJSSubScriptLoader">Diferencias con mozIJSSubScriptLoader</h3>
+
+<p>Las diferencias con <code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIJSSubScriptLoader" title="">mozIJSSubScriptLoader</a></code> son:</p>
+
+<ul>
+ <li>El comportamiento cuando se importa/carga el mismo código desde diferentes lugares:
+ <ul>
+ <li>el cargador de subscrip evalua el código especificado cada vez que es invocado, con el objeto global del llamador.</li>
+ <li><code>Components.utils.import</code> evalua el código de cada módulo sólo una vez, en su propio alcance(scope).</li>
+ </ul>
+
+ <p>Por ejemplo:</p>
+
+ <pre class="eval">var scope1 = {}, scope2 = {};
+Components.utils.import("<a class="external" rel="freelink">resource://gre/modules/JSON.jsm</a>", scope1);
+Components.utils.import("<a class="external" rel="freelink">resource://gre/modules/JSON.jsm</a>", scope2);
+assert(scope2.XPCOMUtils === scope1.XPCOMUtils);
+</pre>
+
+ <p>...retorna <code>true</code>, mientras que:</p>
+
+ <pre class="eval">var someURL = "<a class="external" rel="freelink">resource://gre/modules/JSON.jsm</a>";
+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);
+</pre>
+
+ <p>...retorna <code>false</code>.</p>
+
+ <p>Esto significa que <code>Components.utils.import</code> es más apropiado para compartir código (y datos?) eficientemente entre scripts JS corriendo en diferentes alcances (scopes).</p>
+ </li>
+ <li>El cargador de subscript acepta una URL para el código a cargar, mientras que <code>import</code> sólo acepta <code><a href="es/Usando_m%c3%b3dulos_de_c%c3%b3digo_JavaScript#Protocolo_resource:">resource:</a></code> y <code>file:</code> URIs.</li>
+</ul>
+
+<h3 id="Recursos_Adicionales" name="Recursos_Adicionales">Recursos Adicionales</h3>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=238324" title="FIXED: Implement JavaScript code-sharing module system">error 238324</a></li>
+ <li>La documentación en <a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/idl/xpccomponents.idl" rel="custom">xpccomponents.idl</a></li>
+ <li>Los casos de prueba en <code><a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/tests/unit/" rel="custom">js/src/xpconnect/tests/unit/</a></code></li>
+</ul>