Object.prototype возвращает пустой объект в узле

Пока я запускаю Object.prototypeв консоли браузера, я получаю все свойства и методы, доступные внутри Object.prototype. Это так, как ожидалось, но когда я выполняю то же самое в терминале NodeJS, я получаю пустой объект {}. Может ли кто-нибудь объяснить мне, почему это так? Я добавил скриншоты обоим.

браузер

Терминал

javascript,node.js,object,

15

Ответов: 2


14 ов принято

Это связано с тем, что console.log () в узле использует util.inspect (), который использует Object.keys () для объектов и возвращает только перечисленные свойства. И Object.prototype содержит неперечислимые свойства, поэтому он возвращает пустой узел.

Подобное поведение можно наблюдать в приведенном ниже фрагменте, когда мы console.log(Object.prototype)регистрируем пустой {};

console.log(Object.prototype);

Но когда мы явно определяем перечислимое свойство, Object.prototypeон регистрирует объект, содержащий это свойство:

Object.defineProperty(Object.prototype, 'property1', {
  value: 42,
  enumerable : true
});
console.log(Object.prototype)

Для справки


Кстати, вы можете использовать, Object.getOwnPropertyNamesесли хотите узнать или получить доступ к этим свойствам.

> Object.getOwnPropertyNames(Object.prototype)
[ 'hasOwnProperty',
  'constructor',
  'toString',
  'toLocaleString',
  'valueOf',
  'isPrototypeOf',
  'propertyIsEnumerable',
  '__defineGetter__',
  '__lookupGetter__',
  '__defineSetter__',
  '__lookupSetter__',
  '__proto__' ]

Он не будет перечислять другие свойства, которые вы можете найти в консоли Chrome chrome, например scope или значение обещаний. Но это достаточно хорошо!

JavaScript, Node.js, объект,
Похожие вопросы

Warning: fopen(../q/cache/51233812.jkhjkAAAAAAAAAAAA.html): failed to open stream: No such file or directory in /home/a0157998/domains/moredez.ru/public_html/q/index.php on line 138

Warning: fwrite() expects parameter 1 to be resource, boolean given in /home/a0157998/domains/moredez.ru/public_html/q/index.php on line 139

Warning: fclose() expects parameter 1 to be resource, boolean given in /home/a0157998/domains/moredez.ru/public_html/q/index.php on line 140