Estoy investigando getters y setters en JavaScript y qué tan bien van con las funciones de extensión para extender objetos, como $ .extend de jQuery y _.extend de Underscore. La configuración del código es el siguiente:Getters/setters de JavaScript y extender objetos
var test = {
get size() { return this._size; },
set size(val) { this._size = val; },
}
test.size = "LARGE";
console.log(test.size);
//$.extend(test, { get size() { return "MEDIUM"; } });
_.extend(test, { get size() { return "MEDIUM"; } });
console.log(test.size);
test.size = "SMALL";
console.log(test.size);
En Chrome y Firefox me sale:
LARGE
MEDIUM
SMALL
Puede alguien explicar lo que está ocurriendo allí? ¿Por qué después de llamar al colocador original, también se restaura el getter original?
creo que la getter reemplaza tanto el setter original como el getter, y que al final simplemente establece la propiedad 'size' en" SMALL ". Haga 'console.log (this._size);' al final y vea lo que obtiene .. – JCOC611
@ JCOC611 - No lo creo. Ver mi respuesta para una explicación. –