update private function

by John Allan

JavaScript

//inspired by:
//http://www.htmlgoodies.com/beyond/javascript/accessing-private-functions-in-javascript.html

var initWebpart = function (id) {
    
    function canInit() {
        return false;
    };
    
    function doOtherStuff() {
        var x = 1;
        return x;
    };
    
    alert('init ' + id + ' = ' + canInit());
    
};

//replace the above canInit function with one which return true
var update = function () {
    var fString, regEx,newFunction, f;
        
    f = initWebpart.toString();
    fString = '';
    regEx = /(function canInit)([\s\S]*?)(;\s*};)/;
    newFunction = 'function canInit () { return true; };';
    
    fString += 'initWebpart = ';
    fString += f.replace(regEx, newFunction);
    fString += ';';
   
    eval(fString);
};

//comment to see the orginal 'false' returned by canInit
update();

initWebpart('myWebPart');