Javascript Rectangle.prototype=Object.create(Shape.prototype)和Rectangle.prototype=Shape.prototype之间有什么区别?

Javascript Rectangle.prototype=Object.create(Shape.prototype)和Rectangle.prototype=Shape.prototype之间有什么区别?,javascript,Javascript,我正在阅读以下代码,开始想知道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.prototyp

我正在阅读以下代码,开始想知道
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.method
,它也会出现在
Shape.prototype.method


Rectangle.prototype=Object.create(Shape.prototype)正在创建一个继承形状原型的新对象,并将其指定给矩形,这意味着如果您从此点编辑矩形的原型,它将不会影响形状的原型。但如果您编辑形状的原型,您将通过继承在矩形中获得相同的属性


玩一玩-

两者都很相似,第一个是ES5标准,第二个是在ES5标准之前。谢谢,我进一步研究了它,你是对的,所以我删除了答案,因为它不好。再次感谢Michael Gearya调用
Rectangle.prototype=Object.create(Shape.prototype)
后,为什么编辑形状的原型会影响矩形???@Blake-因为原型继承模型。这条线意味着矩形的原型是一个从形状的原型继承属性的对象。看看这篇文章-