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
Object-to-boolean conversions are trivial. All objects (including arrays and functions)
convert to true. This is so even for wrapper objects (new Boolean(false)
) is an object
rather than a primitive value, and so it converts to true.
In your case
console.log(!obj);
will return false.
because an object or an empty object is always a truthy.
A null "object" (really value) will return false.
var obj = null;
console.log(!!obj);
If you wanted to check if it has no properties, you might try:
var obj = new Object();
var empty = true;
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
empty = false;
break;
}
}
console.log(empty);