我知道函数是javascript中的对象,并且可以将这些函数分配给变量。我也知道这个问题:How does the (function() {})() construct work and why do people use it?。
但我想知道在这种情况下它究竟意味着什么: https://github.com/zsolt/retwis-nodejs/blob/master/domain.js#L43
User = function(){}
这一行之后是"假设"的一些成员函数(方法?)的声明。 User
对象。
在SO中似乎没有其他解释的答案。
答案 0 :(得分:7)
这意味着User
是一个不接受输入,没有副作用并且不返回任何内容的函数。
很可能是类构造函数,稍后会添加方法。 User.foo = function() { /* ... */}
意味着一个静态方法,所以如果您习惯于在Java体系结构中思考,那么这更像是一个实用程序类。
你应该在Javascript中查找伪古典继承。与Java类似,代码将 static 方法添加到User
类,而不是对象。
我仍然相信代码遵循Java类模式,因为编写者更喜欢User
是可以实例化的构造函数,具有静态方法,并且没有实例方法(我看到),在具有属性的对象上。你是对的,这是迂回的,但如果他们是Java开发人员,那就是作者会做的事情。它确实具有以下优点:实例方法可能会稍后添加到User
,而客户端代码影响很小,但我看不到User
会发生这种情况(我没有看起来很长。)
顺便说一下,我推断出这是因为函数的CapitalizedNames
意味着它应该在Javascript工程中使用new
调用,这意味着它是一个类。弄清楚为什么一个类可能更可取仅仅与Java经验有关。
答案 1 :(得分:0)
在Javascript中创建对象的规范方法是:
function user(config) {
this.config = config;
...
}
User = new user(config);
它使用this
上下文(和概念)。如果要创建命名属性和/或方法,则使用此格式。
如果您不需要创建this
上下文,则可以使用以下内容:
User = function(){}
这里的构造函数是匿名的,不会创建任何上下文。出于同样的原因,不需要new
关键字。