JavaScript 单例和 IntelliJ Idea

JavaScript Singleton and IntelliJ Idea

我在使用 IntelliJ Idea 的代码完成和语法检查以及 JavaScript 时遇到问题。

我有以下(简化的)单例对象代码:

var MySingleton = new function() {
    var self = this;

    self.prop = "hello world";

    self.printHello = function() {
        console.log(self.prop);
    };
};

MySingleton.printHello();

问题是,IntelliJ 在最后一行抱怨 Unresolved function or method printHello()。当从 MySingleton. 自动完成时,它也不会建议 printHello。不过代码本身工作正常。

我想我必须以不同的风格注释或重写我的代码。但是怎么办?

我正在使用工厂在 Javascript 中获取 Singeltons。

var factory = function(){
    this.singelton = null;
    /**
     * @return MySingleton
     */
    function singelton(){
        if(this.singelton==null){
            this.singelton = new MySingelton();
        }
        return this.singleton;
    }
}

var instance_of_my_singleton = factory.singelton();

看来模块模式和我想做的很接近,并且得到了Idea代码索引的良好支持:

var MySingleton = (function () {
    var self = this;

    var prop = "hello world";

    function printHello () {
        console.log(self.prop);
    };

    // export public functions
    return {
        printHello: printHello
    };
})();

MySingleton.printHello();