I don't really follow why do we need to check `thing.prototype`, or why do we fallback to `{}` ?
Namespace will always return a `name-spaced` object regardless of weather namespace used before or not, so I think
`let fn = privateNS(thing).getOwnerWindow` should be enough. If not please add comment explaining why not.