constructor

Foo.prototype.constructorのもともとの値は、function Foo(){…}
({}).constructorの値は、function Object(){[native code]}
よって、Foo.prototype={…}とプロトタイプオブジェクト全体をすげ替えてしまうと、constructorプロパティの内容が変わってしまうことになる。
こういうときはその後で、Foo.prototype.constructor=Fooとしておくとつじつまが合う。
prototypeオブジェクトをすげ替えて影響のあるプロパティは他にはなさそう。