javascript - 您可以将实例命名为与其构造函数名称相同的名称吗?

标签 javascript constructor singleton instance

能否将实例命名为其构造函数名称?

var myFunc = new function myFunc(){};

?

看起来,这用新实例替换了函数对象...这意味着这是一个很好的单例。

我还没有看到任何人使用它,所以我想,它有一些我不知道的缺点......

有什么想法吗?

最佳答案

是的...

但是,您正在创建一个命名函数但从未按名称引用它,这看起来确实很奇怪。

我见过的更常见的模式是

function MyClass(){
    this.val = 5;
};
MyClass.prototype.getValue = function() {
    return this.val;
}
MyClass = new MyClass();

但当人们这样做时,我想知道他们为什么不直接使用文字对象

var MyClass = {
    val: 5,
    getValue: function() {
        return this.val;
    }
}

我什至更愿意在这里使用模块模式

var MyClass = (function(){
    var val = 5;
    return {
        getValue: function() {
            return val;
        }
    };     
})();

免责声明

现在是否应该使用单例模式,这是另一个问题(如果你关心测试、依赖管理、可维护性、可读性,答案是否定的)

关于javascript - 您可以将实例命名为与其构造函数名称相同的名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043889/

相关文章:

java - 为什么Spring Boot主应用总是触发PMD的HideUtilityClassConstructorCheck?

java - 主类java中是静态的,构造函数中是非静态的

c++ - 构造函数调用层次

JavaScript 发生变化以匹配模式

javascript - 如何在 Cucumber 中创建和使用常见功能文件?

javascript - 有没有什么方法可以在不迭代的情况下从对象数组中创建属性数组?

javascript - 使用 eval() 执行用户提供的代码有问题吗?

java - arrayList 字符串搜索 : NullPointerException

java - 难以理解为什么子类化单例与单例的定义相矛盾?

java - 单例实例化创建多个对象