Pregunta

Estoy tratando de implementar el patrón de módulo revelador, pero no puedo exponer una propiedad privada modificada.

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".

¿Fue útil?

Solución

return {
    fullName: name,
    set: setName
};

que utiliza los valores de name y setName.No crea una referencia a la variable.Efectivamente, se copia name.

Debe crear un método de generación de generación correspondiente, para aprovechar los cierres para que pueda mantener una referencia a una variable.

Otros consejos

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/

Si su valor es un atributo en un objeto o matriz, puede exportar el objeto o la matriz y la exportación será por referencia, por lo que los usuarios externos verán cambios actualizados.Es un poco arriesgado, ya que el patrón genérico de las variables de exportación tiene la copia escalar / objeto de la dicotomía de referencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top