That's the correct behavior you're seeing. The 'delete' keyword only deletes an object's own properties; it can't delete the object's prototype's properties. (And if it did, that would be terrible -- it would mess up any other objects inheriting from that same prototype!)
Try the following:
> function Constructor() {}
undefined
> Constructor.prototype.test = "Prototype";
"Prototype"
> var obj = new Constructor();
undefined
> obj.test
"Prototype"
> obj.test = "Child"
"Child"
> obj.test
"Child"
> delete obj.test
true
> obj.test
"Prototype"
The key to prototypical inheritance is that prototypes are actual objects containing their own properties, and that inheritance is fully live and dynamic. If an object doesn't define a property but an object in its prototype chain does, the child object inherits that value. When its value gets overridden locally, it now defines that property itself. If the child object's property gets deleted, the value from the prototype comes through again.