首页 > 为什么子类的实例改变超类构造函数的属性,其他实例中内容也会变化?

为什么子类的实例改变超类构造函数的属性,其他实例中内容也会变化?

instance1在SubType里面找不到colors,就会去原型里面找colors,但是SubType.prototype是SuperType的一个实例吧,那么在这个实例里面给colors添加一个black,又会在instance2里面体现出来。本人小白,最近一直在自学js,描述错的地方请见谅。


instance1 和 instance2 都是SubType的实例。

如果代码是这样的

instance1.colors = 'black'

则只会给instance1添加一个colors属性,而不会影响SubType 的colors

但是下面的代码

instance1.colors.push()

调用的push方法,instance1需要顺着原型链搜索,push之后修改了 SubType的colors

再new一个instance2的时候,它和instance1的原型是一样的,因为instance1修改了SubType的colors,读取instance2的colors时就会在原型中找到instance1修改过的colors。

所有alert的结果是一样的

【热门文章】
【热门文章】