gpt4 book ai didi

javascript - Rectangle.prototype = Object.create(Shape.prototype) 和 Rectangle.prototype = Shape.prototype 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 11:54:07 28 4
gpt4 key购买 nike

我正在阅读以下代码,并开始想知道 Rectangle.prototype = Object.create(Shape.prototype)Rectangle.prototype = Shape.prototype< 之间有什么区别?因为 Object.create(Shape.prototype) 和 Shape.prototype 都返回一个对象。

//Shape - superclass
function Shape() {
this.x = 0;
this.y = 0;
}

Shape.prototype.move = function(x, y) {
this.x += x;
this.y += y;
console.info("Shape moved.");
};

// Rectangle - subclass
function Rectangle() {
Shape.call(this); //call super constructor.
}

Rectangle.prototype = Object.create(Shape.prototype);

最佳答案

Rectangle.prototype = Shape.prototype; 将 Rectangle 的原型(prototype)指向与 Shape 的原型(prototype)相同的对象,这意味着两个原型(prototype)现在是同一个对象。因此,如果您编辑 Rectangle.prototype.method,它也会出现在 Shape.prototype.method 中。

Rectangle.prototype = Object.create(Shape.prototype); 正在创建一个继承 Shape 原型(prototype)的新对象,并分配给 Rectangle 的,这意味着如果你编辑 Rectangle 的prototype 从这点来说,不会影响 Shape 的。但是如果你编辑 Shape 的原型(prototype),你将通过继承在 Rectangle 中获得相同的属性。

玩一玩 - https://jsfiddle.net/j8o10zfn/

关于javascript - Rectangle.prototype = Object.create(Shape.prototype) 和 Rectangle.prototype = Shape.prototype 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38581106/

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