Estoy tratando de averiguar cómo se intercepta la configuración de una propiedad en la implementación de CSSStyleDeclaration de jsdom . Esto se está haciendo con fines de validación. Quiero saber dónde está ocurriendo esta validación. enlace github
Esta es la línea donde está ocurriendo la configuración. this[lowercaseName] = value;
Solo conozco un método que se puede usar para interceptar esta acción. Que es el uso de Proxy Object . Pero el objeto en cuestión no es un objeto proxy.
Por lo tanto Pregunta: ¿Cuáles son las otras formas de interceptar ( hombre en el medio) la acción de establecer propiedades en un objeto?
Para confirmar que la intercepción está ocurriendo:
const {CSSStyleDeclaration} = require('cssstyle') const decl = new CSSStyleDeclaration() decl.setProperty('background-color', 'invalid-value') decl.getPropertyValue('background-color') // '' returns empty string decl.setProperty('background-color', '#333') decl.getPropertyValue('background-color') // '#333'¿Cuáles son las otras formas de interceptar (hombre en el medio) la acción de establecer propiedades en un objeto?
¡ Setters !
La sintaxis de conjunto vincula una propiedad de objeto a una función que se llamará cuando haya un intento de establecer esa propiedad.
En su ejemplo particular, la validación de color se realiza mediante una función parseColor llamada por el setter background-color .