(function() { window.stopBefore = function stopBefore(object, methodName) { // stopBefore('Element.prototype.removeChild') if (typeof methodName == 'undefined' && typeof object == 'string') { var temp = resolvePath(object); object = temp.object; methodName = temp.methodName; } var originalMethod = object[methodName]; object[methodName] = function patched() { debugger; var result = originalMethod.apply(this, arguments); return result; }; object[methodName].removeBreakpoint = function() { object[methodName] = originalMethod; }; object[methodName].__original = originalMethod; }; window.stopAfter = function stopAfter(object, methodName) { // stopAfter('jQuery.fn.html') if (typeof methodName == 'undefined') { var temp = resolvePath(object); object = temp.object; methodName = temp.methodName; } var originalMethod = object[methodName]; object[methodName] = function patched() { var result = originalMethod.apply(this, arguments); debugger; return result; }; object[methodName].removeBreakpoint = function() { object[methodName] = originalMethod; }; object[methodName].__original = originalMethod; }; function resolvePath(path) { var object = this; var parts = path.split('.'); for (var i = 0, ii = parts.length - 1; i < ii; i++) { object = object[parts[i]]; } return { object: object, methodName: parts[ii] } } })();