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="https://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
delete
set
Object.defineProperty()
__defineGetter__
__defineSetter__
- Defining Getters and Setters in JavaScript Guide