Javascript允许将函数定义为
function Name() { content; }
和
var Name = function() { content; }
班级是否有同等学历?我正在寻找创建一个类的单个实例。我知道如何做的唯一方法是
function ClassName() { content};
var instance = new ClassName();
我可以不将这两者合并为一个声明吗?
谢谢!
答案 0 :(得分:9)
如果您只想要一个单身人士,则根本不需要使用函数来创建对象:
var instance = {
name: "foo",
method: function() {
// do something
}
};
这会创建一个具有name
和method
属性的对象。您不必通过初始化添加它们,如果您不想这样做,您可以这样做:
var instance = {};
instance.name = "foo";
instance.method = function() {
// do something
};
我通常在定义单例或“类”(实际上是构造函数)时使用函数,但这是因为我有一个关于命名函数的东西(我指定的上面的函数)到method
属性是匿名,这意味着我的工具对我没什么帮助 - 使用调用堆栈等)。所以我可能会这样做:
var instance = (function() {
var publicSymbols = {};
publicSymbols.name = "foo";
publicSymbols.method = instance_method;
function instance_method() {
// do something
}
return publicSymbols;
})();
...虽然我通常使用较短的名称publicSymbols
(想要相当清楚它做了什么)。首先,这让我拥有真正的私有函数,单例或“类”可以使用其他人无法看到的函数。 More here.但这是一种风格选择;它可以像上面的前两个例子一样简单。
答案 1 :(得分:0)
你可以用它。它是一个自动执行的函数,它将分配函数的结果。
var instance = (function className() { return something; } )();