JS原型,小混乱

时间:2014-11-25 22:36:01

标签: javascript oop

我是javascript的新手。

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

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

我想知道:
1.在将类Shape继承到类Square中是否可以写Square.prototype= new Shape();就足够了? 这条线有什么不同:
   Square.prototype.__proto__= Shape.prototype; 因为广场。

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

1 个答案:

答案 0 :(得分:0)

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

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

由于这些原因:Understanding the difference between Object.create() and new SomeFunction()

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