Search code examples
javascriptdojomonkeypatching

Monkey patch not firing. (Guess this Monkey cant punch ducks.)


I am trying to patch the JsonRest query method. Nothing I do seams to have an effect. Below I would expect the query method to no longer work and just write "monkey punching a duck." out to the console. But alas the entire app keeps on working ignoring my blatant attempt to break it. Do I need to patch a specific instance?

dojo.require("dojo.store.JsonRest");
(function(query, options){dojo.store.JsonRest.query=function(){console.info("monkey punching a duck.");};})();
aprStore = new dojo.store.JsonRest({"target":"/web/rest/apr/","idProperty":"ID"});
var sqry = "?nq=aquerytorun";
aprStore.query(sqry).then(function(result){});

The main goal is I want at the underlying xhrGet so I can attach a callback to the error property. The .query(function,function) is ignoring my error function passed in as the second parameter. http 302 is what is driving me nuts at the moment.


Solution

  • It's not 100% clear what you're trying to do, but I suspect you need to put your function on the prototype object of that JsonRest thing:

    dojo.store.JsonRest.prototype.query = function() { ... };
    

    Then instances made from that constructor will have access to your "query" function.