Javascript 允许将函数定义为
function Name() { content; }
和
var Name = function() { content; }
是否有类的等价物?我正在寻找创建类的单个实例。我知道该怎么做的唯一方法是
function ClassName() { content};
var instance = new ClassName();
我不能将这两个组合成一个语句吗?
谢谢!
最佳答案
如果您只想要一个单例,则根本不必使用函数来创建对象:
var instance = {
name: "foo",
method: function() {
// do something
}
};
这将创建一个具有 name
和 method
属性的对象。如果你不想,你不必像那样通过初始化添加它们,你可以这样做:
var instance = {};
instance.name = "foo";
instance.method = function() {
// do something
};
我通常在定义单例或“类”(实际上是构造函数)时使用函数,但那是因为我对命名函数(我分配的上面的函数method
属性是anonymous,这意味着我的工具帮不上什么忙——调用堆栈等)。所以我可能会这样做:
var instance = (function() {
var publicSymbols = {};
publicSymbols.name = "foo";
publicSymbols.method = instance_method;
function instance_method() {
// do something
}
return publicSymbols;
})();
...尽管我通常为 publicSymbols
使用较短的名称(希望相当清楚它的作用)。一方面,这让我拥有了真正私有(private)的功能,单例或“类”可以使用这些功能,而其他人无法看到。 More here.但这是一种风格选择;它可以像上面的前两个示例一样简单。
关于javascript - javascript中类的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4605044/