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的结果是一样的