javascript - 在 javascript 中,为什么 Array.constructor 指向函数?

标签 javascript function constructor prototype

我目前正在研究 javascript 原型(prototype)和继承,并提出了以下代码

> Array.constructor === Function;
< true
> Function.constructor === Function;
< true

我不明白为什么 Array.constructor 指向 Function 以及为什么 Function.constructor 指向 Function?其背后的原因是什么?为什么 javascript 的创建者要让它成为现在的样子?

最佳答案

Array 是一个函数 — 如果不是,您将无法编写 new Array()

因此,它的构造函数属性指向Function

您可能正在寻找 Array.prototype.constructor,它确实是 Array。另一方面,Function.prototype.constructor 是预期的 Function

构造函数的 prototype 的属性是由您构造的任何实例继承的;例如 new Array().constructor === Array.prototype.constructor

Array.constructor 等静态属性是从 Function.prototype 继承的,因为构造函数是函数,因此是 Function 的实例。

console.log(
  Array.prototype.constructor === Array //=> true
)

console.log(
  Function.prototype.constructor === Function //=> true
)

关于javascript - 在 javascript 中,为什么 Array.constructor 指向函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43036944/

相关文章:

javascript - 防止图像调整 div 大小

javascript - 如何使用node-webkit-agent?

在 C 中构建函数调用

javascript - 将鼠标悬停在元素上时显示子元素

javascript - 如何从一个jsp页面到另一个jsp页面获取select标签中给出的值

C++构造函数/析构函数

c++ - 继承,为什么要为基类调用两个构造函数,C++

c++ - 构造函数可以在c++中调用另一个构造函数吗?

c - 我的求输入的每个其他数字的两倍的数字之和的函数在 C 中不起作用?

c - C函数中的参数传递