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)
我不能将这两者合并为一个陈述吗?
谢谢!
如果您只想要一个单例,则根本不必使用函数来创建对象:
var instance = {
name: "foo",
method: function() {
// do something
}
};
Run Code Online (Sandbox Code Playgroud)
这将创建一个对象name
和method
属性.您不必通过初始化添加它们,如果您不想这样做,您可以这样做:
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
(想要相当清楚它做了什么).首先,这让我拥有真正的私有函数,单例或"类"可以使用其他人无法看到的函数.更多这里.但这是一种风格选择; 它可以像上面的前两个例子一样简单.
归档时间: |
|
查看次数: |
4201 次 |
最近记录: |