aboutsummaryrefslogtreecommitdiff
path: root/files/es/rhino/resumen/index.html
blob: bda616d66a716943ba8c5528a5449d7fc6f195a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
---
title: Resumen de Rhino
slug: Rhino/Resumen
translation_of: Mozilla/Projects/Rhino/Overview
---
<h3 id="Introduction" name="Introduction">Introducción</h3>
<p>La mayoría de las personas que han utilizado <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> antes lo han hecho añadiendo las secuencias de comandos <a href="/en/HTML" title="en/HTML">HTML</a> a sus páginas web. Sin embargo, Rhino es una implementación de sólo el núcleo del lenguaje y no contiene objetos o métodos para manipular documentos HTML.</p>
<p>Rhino incluye</p>
<ul>
  <li>Todas las características de <a href="/en/New_in_JavaScript_1.7" title="en/New_in_JavaScript_1.7">JavaScript 1.7</a></li>
  <li>Permite secuencia de comandos directos para Java</li>
  <li><a href="/en/Rhino/Shell" title="en/Rhino/Shell">Una consola JavaScript</a> para la ejecución de los scripts de JavaScript</li>
  <li><a href="/en/Rhino/JavaScript_Compiler" title="en/Rhino/JavaScript_Compiler">Un compilador JavaScript</a> para transformar archivos de código fuente JavaScript en archivos Java class</li>
  <li><a class="external" href="http://www.mozilla.org/rhino/debugger.html">Un depurador JavaScript</a> para scripts ejecutados con Rhino</li>
</ul>
<h3 id="Language" name="Language">Lenguaje</h3>
<p>El lenguaje JavaScript en sí esta estandarizado por la norma <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">Standard ECMA-262 ECMAScript: A general purpose, cross-platform programming language</a>. Rhino 1.3 y superiores se ajustan a la Versión 3 de la Norma.</p>
<p>Rhino 1.6 y superiores implementan <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-357.htm">ECMA-357 ECMAScript for XML (E4X)</a>. Consulte las especificaciones para obtener más información sobre la norma, y vea <a class="external" href="http://www.mozilla.org/rhino/rhino16R1.html#E4X">Versión de Rhino 1.6R1 notas de versión </a>para obtener mas información sobre la implementación de Rhino.</p>
<p>Además, Rhino ha implementado JavaAdapters, que le permite implementar JavaScript en cualquier interfaz Java o ampliar una clase Java con un objeto JavaScript. Vea el ejemplo <code class="filename">enum.js</code> para obtener mas información.</p>
<p>Numerosos libros y tutoriales de JavaScript están disponibles. <a class="external" href="http://www.oreilly.com/catalog/jscript5/">JavaScript: The Definitive Guide</a> es recomendable, y contiene un capítulo sobre Rhino.</p>
<h3 id="Deprecated_Language_Features" name="Deprecated_Language_Features">Características del Lenguaje Obsoletas</h3>
<p>Varias características del lenguaje introducidas en JavaScript 1.2 se consideran obsoletas. Estas características permiten la "reflexión computacional": es decir, la capacidad de un script para determinar e influir en los aspectos de la forma que se evalúa. Estas características no suelen ser útiles, sin embargo, imponen restricciones significativas en las  implementaciones que dificultan o impiden la optimización.  Las características en desuso son<span style="line-height: inherit;"> </span>the<span style="line-height: inherit;"> </span><code style="font-size: 14px; line-height: inherit;">__proto__</code><span style="line-height: inherit;"> </span>and<span style="line-height: inherit;"> </span><code style="font-size: 14px; line-height: inherit;">__parent__</code><span style="line-height: inherit;"> </span>properties<span style="line-height: inherit;">, y los constructores</span><span style="line-height: inherit;"> </span><code style="font-size: 14px; line-height: inherit;">With</code><span style="line-height: inherit;">, </span><code style="font-size: 14px; line-height: inherit;">Closure</code><span style="line-height: inherit;">, y</span><span style="line-height: inherit;"> </span><code style="font-size: 14px; line-height: inherit;">Call</code><span style="line-height: inherit;">. Si pretende invocar estos constructores con la </span>versión<span style="line-height: inherit;"> 1.4 se producirá un error</span><span style="line-height: inherit;">. para otras versiones, se genera una advertencia.</span></p>
<h3 id="Internationalization" name="Internationalization">Internacionalización</h3>
<p>Los mensajes reportados por el motor de JavaScript por defecto son recuperados desde el archivo de propiedad <code class="filename">org/mozilla/javascript/resources/Messages.properties</code>. Si existen otras propiedades de los archivos con las extensiones correspondientes a la localización actual, se van a utilizar en su lugar.</p>
<h3 id="JavaScript_Language_Versions" name="JavaScript_Language_Versions">Versiones del Lenguaje JavaScript</h3>
<p>Algunos comportamientos en el motor JavaScript depende de la versión del lenguaje. En la incorporación del navegador, la versión de idioma se selcciona mediante el atributo <code>LANGUAGE</code> de la etiqueta <code>SCRIPT</code> con los valores tales como <code>"JavaScript1.2"</code>.</p>
<p>Versión 1.3 y superiores son compatibles con <a href="http://es.wikipedia.org/wiki/Ecma_International" title="http://es.wikipedia.org/wiki/Ecma_International">ECMA</a>.</p>
<h4 id="Operators_.3D.3D_and_.21.3D" name="Operators_.3D.3D_and_.21.3D">Los Operadores <code>==</code> and <code>!=</code></h4>
<p>La versión 1.2 sólo utiliza la igualdad estricta para los operadores <code>==</code> y <code>!=</code>. En la versión 1.3 y superiores, <code>==</code> y <code>!=</code> tienen el mismo significado que ECMA. Los operadores <code>===</code> y <code>!==</code> se utiliza estrictamente en todas las versiones.</p>
<h4 id="ToBoolean" name="ToBoolean">Para Booleano</h4>
<p><code>Booleano(new Boolean(false))</code> es falsa para todas las versiones anteriores a 1.3. Es <em>true </em>( y por lo tanto compatible con ECMA) para la versión 1.3 y superiores.</p>
<h4 id="Array.prototype.toString_and_Object.prototype.toString" name="Array.prototype.toString_and_Object.prototype.toString"><code>Array.prototype.toString y Object.prototype.toString</code></h4>
<p>La versión 1.2 solo retorna array o objetos de notación literal (<code>"{{ mediawiki.external(1,2,3) }}"</code> ó <code>"{a:1, b:2}"</code> por ejemplo). En la  versión 1.3 y superiores esta funciones es compatible con ECMA.</p>
<h4 id="Array_constructor" name="Array_constructor"><code>Constructores de Array</code></h4>
<p><code>Array(<var>i</var>)</code> para un argumento de número i construye una matriz con un solo elemento igual a i solo para la versión 1.2. Lo contrario si se utiliza la versión ECMA compatible ( Una matriz se construye sin elementos pero con propiedad de longitud igual a i).</p>
<h4 id="String.prototype.substring" name="String.prototype.substring"><code>String.prototype.substring</code></h4>
<p>Solo para la versión 1.2, los dos argumentos no se cambian si el primer argumento es menor que el segundo. Todas las demas verciones son compatibles con ECMA.</p>
<h4 id="String.prototype.split" name="String.prototype.split"><code>String.prototype.split</code></h4>
<p>Solo para la versión 1.2, realiza la division de Perl4 cuando se les da un caracter de espacio como argumento (salta principalmente espacios en blanco, y se divide el espacio en blanco). Todas las demás versiones se divide en el carácter de espacio adecuado segín lo especificado por ECMA.</p>
<h3 id="Security" name="Security">Seguridad</h3>
<p>Las caracteristicas de seguridad de Rhino proporcionan la capasidad de rastrear el origen de una parte del código ( y cualquier pedazo de código que se pueda generar). Estas caracteristicas permiten la implementación de una politica de seguridad tradicional basada en URL para JavaScript como en el Navegador Netscape. Integrar esa confianza en el código JavaScript que se ejecuta puede ignorar las caracteristicas de seguridad.</p>
<p>Insertar código JavaScript que no es de confianza debe hacer dos cosas para habilitar las funciones de seguridad. En primer lugar, todos los contesxtos que se crean deben ser suministrados como instancia de un objeto que implementa la interfaz SecuritySupport. Esto proporcionará la funcionalidad Rhino de apoyo que necesita para realizar tareas reliacionadas con la seguridad.</p>
<p>Second, the value of the property <code>security.requireSecurityDomain</code> should be changed to <code>true</code> in the resource bundle <code>org.mozilla.javascript.resources.Security</code>. The value of this property can be determined at runtime by calling the <code>isSecurityDomainRequired</code> method of <code>Context</code>. Setting this property to <code>true</code> requires that any calls that compile or evaluate JavaScript must supply a security domain object of any object type that will be used to identify JavaScript code. In a typical client embedding, this object might be a string with the URL of the server that supplied the script, or an object that contains a representation of the signers of a piece of code for certificate-based security policies.</p>
<p>When JavaScript code attempts a restricted action, the security domain can be retrieved in the following manner. The class context should be obtained from the security manager (see <code>java.lang.SecurityManager.getClassContext()</code>). Then, the class of the code that called to request the restricted action can be obtained by looking an appropriate index into the class context array. If the caller is JavaScript the class obtained may be one of two types. First, it may be the class of the interpreter if interpretive mode is in effect. Second, it may be a generated class if classfile generation is supported. An embedding can distinguish the two cases by calling <code>isInterpreterClass()</code> in the <code>Context</code> class. If it is the interpreter class, call the <code>getInterpreterSecurityDomain()</code> method of <code>Context</code> to obtain the security domain of the currently executing interpreted script or function. Otherwise, it must be a generated class, and an embedding can call <code>getSecurityDomain()</code> in the class implementing <code>SecuritySupport</code>. When the class was defined and loaded, the appropriate security domain was associated with it, and can be retrieved by calling this method. Once the security domain has been determined, an embedding can perform whatever checks are appropriate to determine whether access should be allowed.</p>
<p>{{ languages( { "ja": "ja/Rhino_Overview" } ) }}</p>