While I execute Object.prototype
in browser console, i am getting all the properties and methods available inside Object.prototype
. This is as expected
It is because the console.log() in node use util.inspect(), which uses Object.keys() on objects, and it returns enumerable properties only. And Object.prototype
contains non-enumerable properties, that is why it returns empty node.
Similar behavior can be observed in the below snippet, when we console.log(Object.prototype)
it logs an empty {}
;
console.log(Object.prototype);
But when we explicitly define an enumerable property in Object.prototype
it logs an object containing that property :
Object.defineProperty(Object.prototype, 'property1', {
value: 42,
enumerable : true
});
console.log(Object.prototype)
For Reference
By the way, you can use Object.getOwnPropertyNames
if you want to know or access these properties.
> Object.getOwnPropertyNames(Object.prototype)
[ 'hasOwnProperty',
'constructor',
'toString',
'toLocaleString',
'valueOf',
'isPrototypeOf',
'propertyIsEnumerable',
'__defineGetter__',
'__lookupGetter__',
'__defineSetter__',
'__lookupSetter__',
'__proto__' ]
It won't list other properties you might find in chrome dev console like scope or the value of promises. But it's good enough!