En s'appuyant sur l'excellente solution d'Alexandos Katechis, voici une version du snippet qui ne perturbe pas la valeur originale de la propriété. Je l'ai renommé pour mieux correspondre à ce que je pense quand je l'utilise.
Utilisation :
- Ajouter le snippet via Sources -> Snippets
- Au besoin, appuyez sur Command-O et choisissez d'exécuter le snippet breakOnChange
- Appelez
breakOnChange(anyObject, 'propertyName')
dans la console
- Entreprendre l'action qui provoque le changement
- S'arrête dans le débogueur
Cela est très utile pour repérer des choses comme une bibliothèque globale telle que jQuery piétinée par un script tiers.
(function (global) {
global.breakOnChange = (obj, prop) => {
let value = obj[prop]
Object.defineProperty(obj, prop, {
get: function () {
return value
},
set: function (newValue) {
debugger
value = newValue
},
})
}
})(typeof process !== 'undefined' ? process : window)