我有一个关于原型(prototype)的简短问题。
具有 Square
函数原型(prototype)的对象会继承 Rectangle
函数的原型(prototype),但当然并非所有矩形都是正方形。假设有一个 实例>Rectangle
本身的属性width
和height
改变了,变成了正方形,这个实例如何继承Square
原型(prototype)实际上是正方形吗?另外,给定一个 Square
实例,当它不再是一个正方形时,它怎么会失去 Square
原型(prototype)呢?
最佳答案
不能。继承不是这样工作的。
一般来说,如果您要创建一个继承自矩形的正方形,那么它将覆盖设置高度和宽度的函数,这样设置一个就会设置另一个,并且它永远不会是正方形以外的任何东西(并且边长相等的矩形碰巧是正方形,而不是在代码中)。
如果你想要一个对象,如果高度和宽度相同,有时它的行为会有所不同,那么可以在函数中进行类似 if (this.height === this.width)
的测试,其中这很重要。
关于JavaScript 原型(prototype)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35406177/