gpt4 book ai didi

javascript - let o1.prototype = Object.create(o2.prototype) 和 o1.prototype = o2.prototype 有什么区别?

转载 作者:行者123 更新时间:2023-11-29 20:34:30 29 4
gpt4 key购买 nike

所以我试图理解 o1.prototype = Object.create(o2.prototype) 之间的区别和 o1.prototype = o2.prototype .

根据this question的回答,前者通过 obj1.prototype 的原型(prototype)将 obj2.prototype 设置为 obj1.prototype,但我很难理解为什么你会想要它(例如,新原型(prototype)的原型(prototype)只是 Object.prototype,因为原型(prototype)是一个对象没有进一步的继承)。此外,它似乎并不总是像该问题的答案所暗示的那样有效。

以下面的代码为例:

function o1(){}
o1.prototype.test = "test";
function o2(){}
o2.prototype = Object.create(o1.prototype);
let instance1 = Object.create(o1);
console.log(o2.prototype.test, instance1.prototype.test);

两者都是o2.prototype.testinstance1.prototype.test打印 "test" .因此,分配 o2 似乎并不重要直接到Object.create(o1.prototype)或者设置 o2的原型(prototype)为 Object.create(o1.prototype) .

此外,如果我理解正确,根据链接问题中的答案,如果 o1为空(在本例中为空)然后设置 o2 = o1与设置设置相同 o2 = Object.create(o1)这也与

相同
function o1(){};
function o2(){};
o2.prototype = o1.prototype;

这三者之间有什么显着差异吗?另外,如果 o2.prototype = Object.create(o1.prototype)使用 o1.prototype 创建一个 对象的原型(prototype)作为它自己的原型(prototype),如果 o1的原型(prototype)不为空,那么o1的成员怎么办?的原型(prototype)被导入 o2的原型(prototype)?

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