JavaScript中的对象与函数构造函数

Object vs function constructor in JavaScript

本文关键字:函数 构造函数 对象 JavaScript      更新时间:2024-05-04

我想澄清一个概念。请告诉我我的理解是否正确:

许多javascript内置对象,如Object、String、Array、Date、XMLHttpRequest,我们一直说它们是对象,但它们实际上是构造函数,对吗?

或者这两个名称可以互换使用。

感谢

好的,总结一下:

  • 每个对象都有一个隐藏的__proto__属性
  • 函数是也具有prototype属性的对象
  • 如果,对于某个对象O和函数F,O.__proto__ == F.prototype,我们说"O是F的实例"
  • "F对象"是指作为"F"实例的对象的一种方式。例如:

String对象:object类型的成员,该类型是标准内置String构造函数的实例

其他内置类型和用户定义类型也是如此。如果你有

 function Point(x,y) { ... }
 p = new Point(10,20)

则"p是点对象"。在一次随意的谈话中,你也可以说"p是一个点",尽管这不是严格正确的。

Object的原型是JavaScript中大多数实体的根原型。

您列出的项都是构造函数,是的。

typeof Array // 'function'

调用构造函数将返回一个对象。

typeof (new Array()) // 'object'
typeof (new Date()) // 'object'