object functions can handle hasOwnProperty override

How about `keys(Object(obj))` or our fallback?