函数 () {} 赋给变量时是什么意思

what does function () {} mean when assigned to a variable

本文关键字:变量 是什么 意思 函数      更新时间:2023-09-26

我知道函数是javascript中的对象,函数可以分配给变量。我也知道这个问题:(function(( {}((( 构造如何工作,人们为什么使用它?

但我想知道在这种情况下到底是什么意思:https://github.com/zsolt/retwis-nodejs/blob/master/domain.js#L43

User = function(){}

这一行后面是"假定"User对象的一些成员函数(方法?(的声明。SO中似乎没有其他解释答案。

这意味着User是一个不带输入、没有副作用、不返回任何内容的函数。

它很可能是一个类构造函数,稍后将向其添加方法。 User.foo = function() { /* ... */}意味着一个静态方法,所以如果你习惯于在 Java 架构中思考,这更像是一个实用程序类。

你应该在Javascript中查找伪经典继承。类似于Java,代码将向User添加静态方法,而不是对象。

我仍然非常确信代码遵循 Java 类模式,因为编写者更愿意User是一个可以实例化、具有静态方法且没有实例方法(我看到的(的构造函数,而不是具有函数属性的对象。你是对的,这是迂回的,但如果作者是Java开发人员,这就是作者会做的事情。它确实具有以下优点:以后可以将实例方法添加到User中,而对客户端代码的影响很小,但我没有看到任何证据表明这会发生在User身上(我没有看太久(。

顺便说一下,我推断出这一点是因为函数CapitalizedNames意味着它应该在 Javascript 工程中new调用,这意味着它是一个类。 弄清楚为什么一个类可能更可取只与 Java 经验有关。

在 Javascript 中创建对象的规范方法是:

function user(config) { this.config = config; ... } User = new user(config);

它使用this上下文(和概念(。如果要创建命名属性和/或方法,则使用此格式。

如果您不需要创建this上下文,则可以仅使用以下方法:

User = function(){}

这里的构造函数是匿名的,不会创建任何上下文。出于同样的原因,不需要 new 关键字。