【问题标题】:Object.__proto__ returns a function. What does that mean? [duplicate]Object.__proto__ 返回一个函数。这意味着什么? [复制]
【发布时间】:2021-04-08 01:50:32
【问题描述】:

在 Chrome 中,

Object.__proto__ 返回 ƒ () { [本机代码] }

Function.__proto__.__proto__.__proto__ 返回 null

另外,typeof Object 是 Function。

如果 Object 的类型是 Function,JavaScript 中的一切不都是函数吗?

我是新手,请帮帮我...

【问题讨论】:

  • Object是构造函数,是函数。
  • 我很难理解您的问题的上下文。代码 sn-ps 来自哪里?它们是 console.log 的结果吗?

标签: javascript functional-programming prototype-chain


【解决方案1】:

__proto__Object.prototype 上的 getter/setter,它可以获取对象的内部原型(如果获取),或者设置它(如果设置)。

对于Object.__proto__Object 是一个构造函数,所有函数的内部原型都是Function.prototype,所以这就是您所看到的:

console.log(Object.__proto__ === Function.prototype);

原型链是:

null <- Object.prototype <- Function.prototype <- Object

相比之下,与:

Function.__proto__.__proto__.__proto__ 

原型链是:

null <- Object.prototype <- Function.prototype <- Function 

所以,从Function 访问__proto__ 3 次,你就到达null

如果 Object 的类型是函数,JavaScript 中的一切不都是函数吗?

Object 是一个函数,只是因为它可以将它作为构造函数调用(在大多数情况下这是一件很奇怪的事情,但在技术上是语言允许的)。 p>

const doNotDoThis = new Object();

Object 是一个构造函数 - 这与 Object.prototype 非常不同,后者是一个普通对象。大多数非基元继承自Object.prototype,但只有函数继承自Function.prototype

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-19
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多