inline the hasOwnProperty check
be more defensive when setting .init to the superclass

This only sets it when it doesn't exist anywhere on the prototype chain,
rather than when it's set to a falsy value.