JS原型,小混乱

JS prototypes, small confusion

本文关键字:混乱 原型 JS      更新时间:2023-09-26

我是javascript的新手。

我正在编写一个面向对象的程序来查找矩形和正方形的面积。我有三个类 - 形状,正方形和矩形。我想继承父类 - 形状,进入子类 - Square,我遇到了与原型相关的问题。法典:

Square.prototype= new Shape();
Square.prototype.__proto__= Shape.prototype;

我想知道:
1. 写Square.prototype= new Shape();是否足以将类形状继承为类正方形?
2.线有什么区别:
Square.prototype.__proto__= Shape.prototype;导致类广场。

非常感谢任何帮助,谢谢!

对于您的继承,我宁愿使用:

Square.prototype = Object.create(Shape.prototype);
Square.prototype.constructor = Shape;

出于这些原因:了解 Object.create() 和 new SomeFunction() 之间的区别

Square.prototype.__proto__= Shape.prototype;不是一个好的做法,因为它会用另一个原型替换对象的所有原型链。此操作非常缓慢。此外,属性__proto__已被弃用,并且可能随时消失:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto