We check that our prototype has property abstract. Function hasOwnProperty checks only object, not checks its prototype properties, so every prototype created from prototype of Abs will not have abstract property, will only have it in prototype chain. Full jsFiddle example:

Check console to show results of example.
As You can see in example, it is possible to create objects from inherited types but not from type with abstract property in prototype ( Animal ).