【问题标题】:In MDN site, why does it say Object.prototype inherits from Function.prototype在 MDN 站点中,为什么说 Object.prototype 继承自 Function.prototype
【发布时间】:2014-01-02 15:14:23
【问题描述】:

我知道 Object.prototype.proto = null 是链的末端(浏览器控制台这么说)。

在 MDN 站点的 Object.prototype 页面上:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype

在页面底部的“继承:”下,您将看到“函数”以及下方的可扩展属性和方法。据我了解,它说 Object.prototype 继承了 Function.prototype.bind() 等方法

我可以理解 Object 构造函数共享非原型属性/方法(例如调用者属性),因为它是由 Function 构造函数 fn 构造的。但是当 Object.prototype.proto 为 null 时,Object.prototype 如何从 Function.prototype 继承呢?

有人可以帮忙吗?

【问题讨论】:

    标签: javascript oop inheritance prototype


    【解决方案1】:

    它指的是Object 构造函数继承自什么,而不是对象实例。所有的构造函数都是函数,所以Object函数本身继承自Function.prototype

    当您在页面下方看到以下通知时:

    从函数继承的属性: arity、调用者、构造函数、长度、名称

    更容易理解这是什么意思——它指的是Object.constructorObject.length等属性是如何从Function继承而来的。

    不管怎样,Object.prototype.__proto__ === null Object.prototype.__proto__ === null 确实——Object.prototype 根本不像你想象的那样从 Function.prototype 继承。

    【讨论】:

    • 那么对于MDN网站,是不是换一种说法,你可以继承Function.prototype作为一个选项,也就是重写Object.prototype?
    • @Charles:不。 Object 是构造函数,是一种特殊类型的函数。我们在这里讨论 function 的属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2022-11-30
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多