Можно ли эффективно отслеживать изменения dataLayer в простом JavaScript? Каждый раз, когда вызывается функция dataLayer.push, мне нужно знать об этом событии добавления и проверки, которое было добавлено в dataLayer. Я не могу найти никакого решения для этого. Мне нужно что-то вроде $watch в угловойJS, где можно наблюдать изменения на любом объекте, но в этом скрипте, который я упомянул, я могу использовать только обычный JS. Бесконечный цикл с интервалом в одну секунду не является хорошим решением :)
Спасибо за подсказки, подсказки или советы.
Мне нужно что-то вроде:
function callback() {
// do the stuff with dataLayer
}
watch(window.dataLayer, callback);
window.dataLayer.push({event: 'any event', data: 'any data'});
window.dataLayer.push({event: 'any second event', data: 'any second data'});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете переопределить функцию dataLayer.push и объединить ее с пользовательскими событиями в JS: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
пример:
var x = dataLayer.push; //make x equal to current datalayer function
dataLayer.push = function (myobj){
x(myobj);//call current function
alert('my event dispatch');//event dispatch code goes here
}