Виды и перебор свойств
Личные и наследуемые свойства
Объект имеет личные свойства, что мы ему указали при создании и/или добавили, обратившись к этому объекту непосредственно.
Наследуемые свойства всегда доступны через прототип текущему объекту от родителя и предков, но ему лично они не добавлялись и не принадлежат.
Чтобы проверить, является ли какое-либо свойство личным для конкретного объекта, используется метод hasOwnProperty()
. Вызов этого метода на объекте, у которого мы проверяем личные свойства, вернет нам true, если указанный строчный ключ принадлежит указанному объекту лично, в противном случае (то есть этот ключ есть, но где-то в цепочке прототипов, а она может быть достаточно длинной) - вернет false.
Перебор свойств
Для перебора используется цикл for...in. Он перебирает личные и наследуемые свойства через прототип, поэтому, если нас интересует перебор только личных свойств, нужно указывать условие с проверкой свойства с hasOwnProperty()
Можно упростить работу с перебором свойств. используя методы конструктора Object, которые преобразуют в массив только личные свойства объекта, а с полученным массивом уже работать, как с обычным массивом, используя множество его методов и способов для перебора.
Object.keys()
Object.keys(obj)
принимает объект и возвращает массив ключей его собственных свойств. Если в объекте нет свойств, метод вернёт пустой массив.
Object.values()
Object.values(obj)
возвращает массив значений его собственных свойств. Если в объекте нет свойств, метод Object.values(obj)
вернёт пустой массив.
Object.entries()
Object.entries(obj)
возвращает массив записей, каждым элементом которого будет еще один массив из 2-х элементов: имени свойства и значения этого свойства из объекта obj
.
Last updated