繁体   English   中英

为什么将“函数构造函数”称为“函数构造函数”?

[英]Javascript - Why are “function constructors” called “function constructors”?

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

var neighbor = new Person()  

自从我开始学习Javascript以来,这一直困扰着我一个问题:

为什么将它们称为“函数构造函数”? 毕竟,它们不构造函数。 他们构造对象。 为什么不使用“对象构造函数”?

我了解它们是“构造”的函数,也许这就是名称的来源,但是我仍然觉得这个名称很混乱。

我想念什么吗?

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

使用构造函数

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

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

在类型化和“强”的对象语言(例如Java,C ++或C#)中,构造函数,函数和方法是完全不同的事物,并且它们的作用显然不同。

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

因此它被称为“构造函数”,因为它是一个函数,但是我们(编码者)将其用作构造函数。

不确定是否完全正确。 使用new运算符时,实际上是在构造一个新的Object。 并且如果您运行console.log(neighbor.constructor) ,您将看到它显示Person功能代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM