Javascript - 为什么“函数构造函数”被称为“函数构造函数”

Javascript - Why are "function constructors" called "function constructors"?

本文关键字:构造函数 函数 被称为 为什么 Javascript      更新时间:2023-09-26

我的导师正在谈论函数构造函数...

var neighbor = new Person()  

它向我提出了一个问题,自从我开始学习Javascript以来一直困扰着我:

为什么它们被称为"函数构造函数"? 毕竟,它们不构造函数;他们构造对象。为什么不是"对象构造函数"?

我知道它们是"构造"的函数,也许这就是名称的由来,但我仍然发现这个名称非常令人困惑。

我错过了什么吗?

它们被称为构造函数,因为它们在与new一起使用时可用于创建对象的实例。

使用构造函数

  • 通过编写构造函数来定义对象类型。有一个强有力的约定,有充分的理由,使用大写的首字母 信。

  • 使用 new 创建对象的实例。

在类型和"强"对象语言(如Java,C++或C#)中,构造函数,函数和方法是非常不同的东西,它们的行为显然不同。

但是javascript不是强类型。对于javascript来说,构造函数只是一个基本函数,仅此而已。您可以在没有 new 关键字的情况下调用函数,如果您的函数不使用关键字 this ,它将返回一个对象(但可能为空)。

所以它被称为"构造函数",因为这是一个函数,但我们(编码人员)将其用作构造函数。

不确定是否完全正确。当您使用运算符new实际上构造了一个新对象。如果你运行console.log(neighbor.constructor),你会看到它打印Person函数代码。