Cuando intento crear diferentes instancias de este módulo, no funciona.¿Por qué el patrón de módulo crea un singleton?
Parece ser un singleton. Solo puedo tener una instancia a la vez.
¿Qué mecanismo limita la función del constructor publik() para tener solo en la instancia?
var Module = (function()
{
var publik = function ()
{
};
publik.prototype.test;
publik.prototype.get = function()
{
document.getElementById('a'+test).innerHTML = test;
};
publik.prototype.set = function(value)
{
test = value;
};
return publik;
})();
var object1 = new Module();
var object2 = new Module();
object1.set('1');
object2.set('2');
object1.get();
object2.get();
Entonces, cada vez que llamo nuevo, ¿no es realmente un nuevo objeto de función, es el mismo? –
Sí.Para ser más correctos, cuando encierra una función en el patrón (función() {}()), se ejecuta automáticamente en el tiempo de carga y el resultado se coloca en su lugar. Entonces su script al final parece (internamente) var Module = YourObjectWithGetAndSetMethods; Y cuando haces un var x = Module(); Está llamando a un objeto que ya está instanciado y, por lo tanto, con una variable publik instanciada. – Zlatko
me parece un patrón falso. "Rompe" el significado de la palabra clave "nuevo". ¿Estás de acuerdo? Si es así, ¿por qué la gente usa esto? Obviamente no lo inventé. –