javascript - una - ¿Qué son las funciones__defineGetter__() y__defineSetter__()?
object set javascript (2)
Para responder a su pregunta, __defineGetter__()
y __defineSetter__()
son la forma antigua / original de crear un captador y un definidor para la propiedad de un objeto. Le permiten usar la propiedad de un objeto como un par de nombre / valor, mientras que detrás de escena estos pares de nombre / valor son compatibles con las funciones.
Por ejemplo, supongamos que desea hacer referencia a algunos números aleatorios en rangos fijos. Podrías expresarlas como palabras con el máximo del rango y se vería como una propiedad.
var random = {};
random.__defineGetter__(''ten'', function() {
return Math.floor(Math.random()*10); });
random.__defineGetter__(''hundred'', function() {
return Math.floor(Math.random()*100); });
Tenga en cuenta que, si bien el ejemplo anterior responde a la pregunta, no debe usar esta solución. En su lugar, debe utilizar la forma moderna de getters y setters desde ES5:
var random = {
get ten() { return Math.floor(Math.random()*10); },
get hundred() { return Math.floor(Math.random()*100); }
};
Cualquiera de las construcciones anteriores le permitiría obtener un número aleatorio como este:
var myrand = random.ten;
// returns a result in the range 0 to 9
¿Qué son las __defineGetter__()
y __defineSetter__()
en el prototipo de cada Object
?
Vea los documentos de MDN aquí para una descripción y código de ejemplo:
Un captador es un método que obtiene el valor de una propiedad específica. Un establecedor es un método que establece el valor de una propiedad específica. Puede definir captadores y definidores en cualquier objeto central predefinido u objeto definido por el usuario que admita la adición de nuevas propiedades.
Como se señala en los documentos (y por @ cwallenpoole), las __define[GS]etter__()
ahora están en desuso. Hay mucho más detalle en este artículo . Creo que la función defineProperty() es ahora la sintaxis preferida.