get

  • Enlace amigable (slug) de la revisión: JavaScript/Reference/Operators/get
  • Título de la revisión: get
  • Id de la revisión: 302441
  • Creada:
  • Creador: jesanchez
  • ¿Es la revisión actual? No
  • Comentario

Contenido de la revisión

Resumen

Enlaza la propiedad de un objeto con una función que puede ser llamada cuando la propiedad es buscada.

Sintaxis

{get prop() { . . . } }

Parametros

prop
el nombre de la propiedad a unir con la función dada

Descripción

A veces es deseable permitir acceso a una propiedad que retorna un valor dinámicamente calculado, o si desea mostrar el estado de alguna variable interna sin requerir el uso de llamadas a métodos explicitos. En JavaScript, esto se puede lograr con el uso de un getter (captador). No es posible tener simultaneamente un getter ligado a una propiedad y que dicha propiedad tenga actualmente un valor, aunque es posible usar un getter junto con un setter para crear un tipo de pseudo-propiedad.

js_minversion_note("1.8.5",
  '<p style="text-align: left;">Starting in JavaScript 1.8.5, the <code>get</code> operator:</p>
  <ul style="text-align: left;">
    <li>can have an identifier which is either a number or a string;</li>
    <li>must have exactly zero parameters (see 
      <a href="http://whereswalden.com/2010/08/22/incompatible-es5-change-literal-getter-and-setter-functions-must-now-have-exactly-zero-or-one-arguments/" class="external" rel="external nofollow" target="_blank">Incompatible <abbr title="ECMAScript 5th edition">ES5</abbr> change: literal getter and setter functions must now have exactly zero or one arguments</a>
      for more information);</li>
    <li>must not appear in an object literal with another <code>get</code>
      or with a data entry for the same property (<code>{ get x() { }, get x() { } }</code>
      and <code>{ x: ..., get x() { } }</code> are forbidden).</li>
  </ul>');

El getter puede ser removido usando el operador delete.

Ejemplos

Definir un getter con el operador get

Esto creará una pseudo-propiedad latest (ver ejemplo) del objecto o que podría retornar la más reciente entrada dentro de o.log:

var o = {
  get latest () {
    if (this.log.length > 0) {
      return this.log[this.log.length - 1];
    }
    else {
      return null;
    }
  },
  log: []
}

Note que intentar asignar un valor a latest no lo cambiará.

Borrar un getter usando el operador delete

delete o.latest;

Compatibilidad de navegadores

Basado en la página de página de Robert Nyman

Sin soporte (notablemente en IE6-8) significa que el script lanzará un error de sintaxis.

{{ CompatibilityTable() }}

Característica Firefox (Gecko) Chrome Internet Explorer Opera Safari
Soporte básico {{ CompatGeckoDesktop("1.8.1") }} 1 9 9.5 3
Característica Firefox Mobile (Gecko) Android IE Mobile Opera Mobile Safari Mobile
Soporte básico {{ CompatUnknown() }} {{ CompatUnknown() }} {{ CompatUnknown() }} {{ CompatUnknown() }} {{ CompatUnknown() }}

Consulta también

{{ languages( { "ja": "ja/JavaScript/Reference/Operators/get" } ) }}

 

Fuente de la revisión

<h2 id="Resumen">Resumen</h2>
<p>Enlaza la propiedad de un objeto con una función que puede ser llamada cuando la propiedad es buscada.</p>
<h2 id="Sintaxis">Sintaxis</h2>
<p><code>{get <em>prop</em>() { .&nbsp;.&nbsp;. } }</code></p>
<h2 id="Parametros">Parametros</h2>
<dl>
  <dt>
    <code>prop</code></dt>
  <dd>
    el nombre de la propiedad a unir con la función dada</dd>
</dl>
<h2 id="Descripci.C3.B3n">Descripción</h2>
<p>A veces es deseable permitir acceso a una propiedad que retorna un valor dinámicamente calculado, o si desea mostrar el estado de alguna variable interna sin requerir el uso de llamadas a métodos explicitos. En JavaScript, esto se puede lograr con el uso de un getter (captador). No es posible tener simultaneamente un getter ligado a una propiedad y que dicha propiedad tenga actualmente un valor, aunque es posible usar un getter junto con un setter para crear un tipo de pseudo-propiedad.</p>
<pre class="script" style="font-size: 16px;">
js_minversion_note("1.8.5",
  '&lt;p style="text-align: left;"&gt;Starting in JavaScript 1.8.5, the &lt;code&gt;get&lt;/code&gt; operator:&lt;/p&gt;
  &lt;ul style="text-align: left;"&gt;
    &lt;li&gt;can have an identifier which is either a number or a string;&lt;/li&gt;
    &lt;li&gt;must have exactly zero parameters (see 
      &lt;a href="http://whereswalden.com/2010/08/22/incompatible-es5-change-literal-getter-and-setter-functions-must-now-have-exactly-zero-or-one-arguments/" class="external" rel="external nofollow" target="_blank"&gt;Incompatible &lt;abbr title="ECMAScript 5th edition"&gt;ES5&lt;/abbr&gt; change: literal getter and setter functions must now have exactly zero or one arguments&lt;/a&gt;
      for more information);&lt;/li&gt;
    &lt;li&gt;must not appear in an object literal with another &lt;code&gt;get&lt;/code&gt;
     &nbsp;or with a data entry for the same property (&lt;code&gt;{ get x()&nbsp;{&nbsp;}, get x()&nbsp;{&nbsp;} }&lt;/code&gt;
      and &lt;code&gt;{ x: ..., get x()&nbsp;{&nbsp;} }&lt;/code&gt; are forbidden).&lt;/li&gt;
 &nbsp;&lt;/ul&gt;');</pre>
<p>El getter puede ser removido usando el operador <code><a href="/en/JavaScript/Reference/Operators/delete" title="en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator">delete</a></code>.</p>
<h2 id="Ejemplos">Ejemplos</h2>
<h3 id="Example:_Defining_a_getter_with_the_get_operator" name="Example:_Defining_a_getter_with_the_get_operator">Definir un getter con el operador <code>get</code></h3>
<p>Esto creará una pseudo-propiedad <code>latest</code> (ver ejemplo) del objecto <code>o</code> que podría retornar la más reciente entrada dentro de <code>o.log</code>:</p>
<pre class="brush: js">
var o = {
  get latest () {
    if (this.log.length &gt; 0) {
      return this.log[this.log.length - 1];
    }
    else {
      return null;
    }
  },
  log: []
}
</pre>
<p>Note que intentar asignar un valor a <code>latest</code> no lo cambiará.</p>
<h3 id="Example:_Deleting_a_getter_using_the_delete_operator" name="Example:_Deleting_a_getter_using_the_delete_operator">Borrar un getter usando el operador <code>delete</code></h3>
<pre class="brush: js">
delete o.latest;
</pre>
<h2 id="Browser_compatibility">Compatibilidad de navegadores</h2>
<p>Basado en la página de <a class="external" href="http://robertnyman.com/javascript/javascript-getters-setters.html#regular-getters-and-setters">página de Robert Nyman</a></p>
<p>Sin soporte (notablemente en IE6-8) significa que el script lanzará un error de sintaxis.</p>
<p>{{ CompatibilityTable() }}</p>
<div id="compat-desktop">
  <table class="compat-table">
    <tbody>
      <tr>
        <th>Característica</th>
        <th>Firefox (Gecko)</th>
        <th>Chrome</th>
        <th>Internet Explorer</th>
        <th>Opera</th>
        <th>Safari</th>
      </tr>
      <tr>
        <td>Soporte básico</td>
        <td>{{ CompatGeckoDesktop("1.8.1") }}</td>
        <td>1</td>
        <td>9</td>
        <td>9.5</td>
        <td>3</td>
      </tr>
    </tbody>
  </table>
</div>
<div id="compat-mobile">
  <table class="compat-table">
    <tbody>
      <tr>
        <th>Característica</th>
        <th>Firefox Mobile (Gecko)</th>
        <th>Android</th>
        <th>IE Mobile</th>
        <th>Opera Mobile</th>
        <th>Safari Mobile</th>
      </tr>
      <tr>
        <td>Soporte básico</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
      </tr>
    </tbody>
  </table>
</div>
<h2 id="See_also" name="See_also">Consulta también</h2>
<ul>
  <li><code><a href="/es/JavaScript/Reference/Operators/delete" title="en/JavaScript/Reference/Operators/Special_Operators/delete_Operator">delete</a></code></li>
  <li><code><a href="/es/JavaScript/Reference/Operators/set" title="en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/set_Operator">set</a></code></li>
  <li><code><a href="/es/JavaScript/Reference/Global_Objects/Object/defineGetter" title="en/JavaScript/Reference/Global_Objects/Object/defineGetter">__defineGetter__</a></code></li>
  <li><code><a href="/es/JavaScript/Reference/Global_Objects/Object/defineSetter" title="en/JavaScript/Reference/Global_Objects/Object/defineSetter">__defineSetter__</a></code></li>
  <li><a href="/es/JavaScript/Guide/Working_with_Objects#Defining_Getters_and_Setters" title="en/JavaScript/Guide/Working with Objects#Defining Getters and Setters">Defining Getters and Setters</a> in JavaScript Guide</li>
</ul>
<div class="noinclude">
  <p>{{ languages( { "ja": "ja/JavaScript/Reference/Operators/get" } ) }}</p>
</div>
<p>&nbsp;</p>
Revertir a esta revisión