undefined CheckObjectCoercible(input) throws TypeError
Can this argument be converted to an Object? Note that this throws a TypeError if it cannot (for undefined and null), rather than return false.
function ToObject(input){
if (input === undefined || input === null) throw TypeError;
}