Object.prototype returns empty object in Node

后端 未结 2 932
误落风尘
误落风尘 2021-02-18 16:50

While I execute Object.prototype in browser console, i am getting all the properties and methods available inside Object.prototype. This is as expected

相关标签:
2条回答
  • 2021-02-18 17:26

    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

    0 讨论(0)
  • 2021-02-18 17:50

    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!

    0 讨论(0)
提交回复
热议问题