Is there any way to make an object return false in javascript?
var obj = new Object();
console.log(!!obj) // prints \"true\" even if it\'s empty
We can overwrite Object.prototype.valueOf to make an object appear to be false when it is coerced into a primitive, for example during ==.
However it will not appear to be false when we force it into a boolean using !!, so it doesn't really work in the general case.
var obj = {
valueOf: function () {
return false
}
}
> obj == false
true // Good, we fooled them!
> !!obj
true // Not so good, we wanted false here
> Boolean(obj)
true // Not so good, we wanted false here