vue una propiedad property objeto mdn defineproperties array agregar javascript

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.