Es posible implementar getters / setters dinámicos en JavaScript?
Soy consciente de cómo crear captadores y establecedores para propiedades cuyos nombres ya se conocen, haciendo algo como esto:
// A trivial example:
function MyObject(val){
this.count = 0;
this.value = val;
}
MyObject.prototype = {
get value(){
return this.count < 2 ? "Go away" : this._value;
},
set value(val){
this._value = val + (++this.count);
}
};
var a = new MyObject('foo');
alert(a.value); // --> "Go away"
a.value = 'bar';
alert(a.value); // --> "bar2"
Ahora, mi pregunta es, ¿es posible definir una especie de captadores y establecedores generales como estos? Es decir, crear captadores y establecedores para cualquier nombre de propiedad que no es Ya definido
El concepto es posible en PHP usando__get()
y__set()
métodos mágicos (verla documentación PHP para obtener información sobre estos), así que realmente pregunto si hay un equivalente de JavaScript para estos.
o hace falta decir que, idealmente, me gustaría una solución que sea compatible con todos los navegadores.