javascript中的一个类的单个实例

Mik*_*ail 2 javascript oop

Javascript允许将函数定义为

function Name() { content; }
Run Code Online (Sandbox Code Playgroud)

var Name = function() { content; }
Run Code Online (Sandbox Code Playgroud)

班级有同等学历吗?我正在寻找创建一个类的单个实例.我知道如何做的唯一方法是

function ClassName() { content};
var instance = new ClassName();
Run Code Online (Sandbox Code Playgroud)

我不能将这两者合并为一个陈述吗?

谢谢!

T.J*_*der 9

如果您只想要一个单例,则根本不必使用函数来创建对象:

var instance = {
    name: "foo",
    method: function() {
        // do something
    }
};
Run Code Online (Sandbox Code Playgroud)

这将创建一个对象namemethod属性.您不必通过初始化添加它们,如果您不想这样做,您可以这样做:

var instance = {};
instance.name = "foo";
instance.method = function() {
    // do something
};
Run Code Online (Sandbox Code Playgroud)

我通常在定义单例或"类"(实际上是构造函数)时使用函数,但那是因为我有一个关于命名函数的东西(我分配给method属性的上面的函数是匿名的,这意味着我的工具无法帮助我 - 使用调用堆栈等).所以我可能会这样做:

var instance = (function() {
    var publicSymbols = {};

    publicSymbols.name = "foo";

    publicSymbols.method = instance_method;
    function instance_method() {
        // do something
    }

    return publicSymbols;
})();
Run Code Online (Sandbox Code Playgroud)

...虽然我通常使用较短的名字publicSymbols(想要相当清楚它做了什么).首先,这让我拥有真正的私有函数,单例或"类"可以使用其他人无法看到的函数.更多这里.但这是一种风格选择; 它可以像上面的前两个例子一样简单.