当我尝试制作此模块的其他实例时,它不起作用。

似乎是单例。我一次只能有一个实例。

有什么机制限制构造函数publik()仅在实例上具有?

http://jsfiddle.net/AVxZR/

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();

最佳答案

简短的答案:关闭。

长答案(如果我正确,请发表评论以便我纠正):

  • 加载脚本后,将立即执行您的模块var。 (由函数周围的括号表示。)()
  • 在该模块中,您的publik var被声明,即使函数完成,它也保留在闭包中!
  • 在后续调用中,您仍然可以访问该模块,该模块是自动执行的。简而言之,它总是获得相同的闭包空间和函数作用域以及相同的对象-因此,您的publik变量实际上始终是相同的。
  • 关于javascript - 为什么模块模式会创建一个单例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10691300/

    10-12 22:41