get

Resumen

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

Sintaxis

{get prop() { . . . } }

Parámetros

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 simultáneamente 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.

Característica Firefox (Gecko) Chrome Internet Explorer Opera Safari
Soporte básico 2.0 (1.8.1) 1 9 9.5 3
Característica Firefox Mobile (Gecko) Android IE Mobile Opera Mobile Safari Mobile
Soporte básico ? ? ? ? ?

Consulta también

 

Etiquetas y colaboradores del documento

Colaboradores de esta página: ccarruitero, carloshs92, jesanchez
Última actualización por: carloshs92,