JSFiddle - React, Tailwind, and code Playground
by Dygerati
JavaScript
(function(global, undefined){
global.spyWhenCreated = function(functionPath) {
var props = functionPath.split('.'),
objectName = props.shift(),
obj = this[objectName] || global[objectName];
if(obj) {
for (var i = 0; i < props.length; i++) {
if(!obj.hasOwnProperty(props[i])) {
console.log(props[i], " not present. Observing...");
Object.observe(obj, function(changes) {
debugger;
changes.forEach(function(change) {
if(change.name === props[i]) {
window.spyWhenCreated(functionPath);
}
});
}, ['add']);
return;
} else if(i === (props.length-1)) {
var functionToSpy = obj[props[i]];
obj[props[i]] = function(){
console.log('before function call');
return functionToSpy.apply(obj, arguments);
};
return;
} else {
obj = obj[props[i]];
}
}
}
};
})(window);
window.nike = {};
spyWhenCreated("nike.analytics.providers.TagUtilType.prototype.getParamValue");