Что означает светло-фиолетовый в консоли Chrome? - PullRequest
1 голос
/ 28 апреля 2019

В чем разница между светло-фиолетовым и фиолетовым?Благодарю.enter image description here

background:

Я пытался извлечь все функции proto из типа Array.

const arrayProto = Array.prototype 
const arrayMethods = Object.create(arrayProto) 

arrayMethods возвращает Array {}

Я обнаружил, что все методы в proto (светло-фиолетовый), хотя ни один из них не засчитан. Если я изменяю arrayProto к обычному массиву, подобному [1,2,3], я могу получить числа с помощью arrayMethods [i], так как все числа перечислены в proto .Моя первая мысль: светло-фиолетовые игнорируются или как-то не относятся к arrayMethods.Однако я не могу найти никаких документов об этой части консоли.Почему и как это решить?

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

В JavaScript свойства могут быть перечисляемыми или нет. Неперечислимые свойства игнорируются циклом for-in или Object.keys(). Все встроенные методы не перечисляются. (Вот почему for-in не перечисляет все методы в Object.prototype для каждого объекта.)

Похоже, что Chrome использует темно-фиолетовый для обозначения перечислимого свойства и светло-фиолетовый для обозначения не перечисляемого. Их не нужно наследовать. Демо (скриншот из Chrome 73.0.3683.103):

Object.defineProperties({}, {
  foo: {enumerable: true, value: 1},
  bar: {enumerable: false, value: 2},
});

enter image description here

Если вы хотите получить свойства объекта, включая даже не перечисляемые, вы можете использовать Object.getOwnPropertyNames(o). Однако вам нужно будет самостоятельно следовать цепочке прототипов, если вы хотите найти унаследованные свойства.

1 голос
/ 28 апреля 2019

фиолетовый

представляет индекс массива или имя ключа объекта

Светло-фиолетовый

представляет объектный прототип или Array.prototype .Вы можете выполнить функцию прототипа, используя этот объект или массив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...