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

JavaScript中的对象与函数构造函数,javascript,object,constructor,Javascript,Object,Constructor,我想澄清一个概念。请告诉我我的理解是否正确: 许多javascript内置对象,比如对象、字符串、数组、日期、XMLHttpRequest,我们一直说它们是对象,但实际上它们是构造函数,对吗 或者这两个名称可以互换使用 谢谢好的,总结一下: 每个对象都有一个隐藏的\uuuu proto\uuu属性 函数是也具有原型属性的对象 如果,对于某个对象O和函数F,O.\uu proto\uu==F.prototype,我们说“O是F的一个实例” “F对象”是指作为“F”实例的对象的一种方式。例如:

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

许多javascript内置对象,比如对象、字符串、数组、日期、XMLHttpRequest,我们一直说它们是对象,但实际上它们是构造函数,对吗

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

谢谢

好的,总结一下:

  • 每个对象都有一个隐藏的
    \uuuu proto\uuu
    属性
  • 函数是也具有
    原型
    属性的对象
  • 如果,对于某个对象O和函数F,
    O.\uu proto\uu==F.prototype
    ,我们说“O是F的一个实例”
  • “F对象”是指作为“F”实例的对象的一种方式。例如:

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

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

然后“p是点对象”。在随意的对话中,你也可以说“p是一个点”,尽管这并不完全正确。

对象的原型是JavaScript中大多数实体的根原型

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

typeof Array // 'function'
调用构造函数会返回一个对象

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

函数是对象。;-)<代码>对象
实际上没有任何意义。几乎所有东西都是一个“对象”。现在这些元素实际上是构造函数,它们是函数,并且包含静态方法,例如
Array.isArray
Oh,XMLHttpRequest是一个宿主对象,因此与OP中的其他对象非常不同。我猜这在技术上是正确的,但我认为它实际上并没有回答这个问题?我相信
对象。prototype
(继承自
null
)是根原型,而不是构造函数
对象本身。@Derek朕會功夫 你是对的;我认为构造器会使这一点变得更加混乱。“然而,函数的原型是Object”不,是函数的一个实例,是从Object.prototype继承的Function.prototype(或者在你的符号中,你可以写
函数。{uu-prototype}==Function.prototype
Function.prototype。{uu-prototype}==Object.prototype
)。@RobG同意;我已经编辑成我希望是对OPs问题最简单的回答。(OP并不是真的在询问原型,但这里和其他地方都有大量的资源,如果他们这样做的话。)