You can use a mutation observer. It’s quite widely supported nowadays.
var e = document.getElementById('test')
var observer = new MutationObserver(function (event) {
console.log(event)
})
observer.observe(e, {
attributes: true,
attributeFilter: ['class'],
childList: false,
characterData: false
})
setTimeout(function () {
e.className="hello"
}, 1000)
<div id="test">
</div>