我已经阅读了有关 javascript 原型(prototype)的内容,并阅读了一些 stackoverflow 问题,例如 how-does-javascript-prototype-work我终于正确地理解了原型(prototype),但是当我浏览 Mozilla Developer Netork (MDN) 上有关原型(prototype)的文档时 Details_of_the_Object_Model MDN
下面有一个注释
注意:直接分配给 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/