gpt4 book ai didi

javascript - 关于 Mozilla 开发者网络中定义的 javascript 原型(prototype)解释的困惑

转载 作者:行者123 更新时间:2023-12-03 11:38:08 26 4
gpt4 key购买 nike

我已经阅读了有关 javascript 原型(prototype)的内容,并阅读了一些 stackoverflow 问题,例如 how-does-javascript-prototype-work我终于正确地理解了原型(prototype),但是当我浏览 Mozilla Developer Netork (MDN) 上有关原型(prototype)的文档时 Details_of_the_Object_Model MDN

Prototype diagram

下面有一个注释

注意:直接分配给 FunctionName.prototype 会删除其原始原型(prototype)的“构造函数”属性。结果,(new WorkerBee).constructor 产生“Employee”(而不是预期的“WorkerBee”)。必须注意保留原始原型(prototype)的构造函数。例如,将父级分配给 FunctionName.prototype.__proto__ 。例如,WorkerBee.prototype.__proto__ = new Employee;这样,(new WorkerBee).constructor 就会产生预期的“WorkerBee”。

我似乎无法理解这句话的意思

直接分配给 FunctionName.prototype 会删除其原始原型(prototype)的“构造函数”属性。

这是否意味着Manager.prototype = new Employee将把Manager.__proto__ = Function.prototype替换为Employee.prototype

结果,(new WorkerBee).constructor 产生“Employee”(而不是预期的“WorkerBee”)

它将产生 Employee 是什么意思?我知道我们不应该直接使用 __proto__ 但上面的语句指定使用 FunctionName.prototype.__proto__。在哪种情况下这是正确的?

有人可以举例说明它试图传达什么吗?

最佳答案

函数原型(prototype)用作这些函数生成的对象的原型(prototype)

函数proto指向Function.prototype,因为函数本身也是一个对象实例。设置它的原型(prototype)不会影响它的原型(prototype),但重新设置它的原型(prototype)会影响原型(prototype)。构造函数

您不应将 Child.prototype 设置为 Parent 的实例,而应使用 Object.create。

什么是prototype.constructor以及更多内容解释如下:Prototypical inheritance - writing up

关于javascript - 关于 Mozilla 开发者网络中定义的 javascript 原型(prototype)解释的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26398550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com