Switched from `typeof x.y == 'undefined'` to `x.y == void 0` because it's faster (Thanks /u/brandf)
Added context to the apply to allow for prototypes etc