Nachtrag...
MOMENT hier hast du class1.prototype neu von class0 instanziert und mit einem neuen Objekt überschrieben! instance.prototype.__proto__ verweist aber noch auf das alte Objekt.
genau und das ist der Punkt, stell dir die Prototyp-unterobjekte wie Perlhashes als Objektattribute vor. Die Hashes sind untereinander über "__proto__" verlinkt.
Wenn du nachträglich SUB.prototype.attr="ATTR" schreibst veränderst du ein vorhandenes Hash, beim späteren durchsuchen der Linkliste wird das während der Laufzeit von INSTANCE gefunden.
Schreibst du aber SUB.prototype=new SUPER(); erzeugst du ein ganz neues Hash das aber jetzt nicht von einem Erben verlinkt ist. Das alte Hash bleibt auch im Speicher existent solange es verlinkt bleibt (keine Garbage Collection) und wird ganz normal durchsucht und kann natürlcih nicht die eigenschaften des neuen Hashes wiederspiegeln!!!
Im Perlobjektmodell würde dieses Verhalten einem dynamischen ändern des ISA-Arrays und damit der Erbfolge entsprechen.