I'm trying to implement the Revealing Module Pattern but I'm unable to expose a modified private property.
var myRevealingModule = (function(){
    var name = 'Diogo';
    function setName () {
       name = name + ' Cardoso';
    }
    return {
        fullName: name,
        set: setName
    };
}());
// Sample usage:
myRevealingModule.set();
console.log(myRevealingModule.fullName); // "Diogo" instead of the excepted "Diogo Cardoso".
                return {
    fullName: name,
    set: setName
};
That uses the values of name and setName. It does not create a reference to the variable. Effectively, name is copied.
You need to create a corresponding getName method, to take advantage of closures so that you can keep a reference to a variable.
var myRevealingModule = (function(){
    var name = 'Diogo';
    function setName () {
       name = name + ' Cardoso';
    };
    function getName () {
       return name;
    };
    return {
        fullName: name,
        set: setName,
        get: getName
    };
}());
http://jsfiddle.net/yeXMx/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With