Objects and obj methods Flashcards
Object
Объект (object) — это особый тип данных, он единственный не является примитивом в JS. Каждое свойство состоит из ключа и значения.
Ключ может быть строкой или символом, а значение может быть любым.
Чаще всего объекты создают с помощью литеральной записи.
{ [ nameValuePair1[, nameValuePair2[, …nameValuePairN] ] ] }
new Object()
Вызов в качестве конструктора:
new Object([value])
Конструктор Object создаёт объект-обёртку для передаваемого значения.
Если значением является null или undefined, создаёт и возвращает пустой объект, в противном случае возвращает объект такого типа, который соответствует переданному значению. Если значение уже является объектом, конструктор вернёт это значение.
Values in object
const book = new Object({ title: ‘Война и мир’, author: ‘Лев Толстой’ })
Чтение свойств с помощью точки:
console.log(book.title) // «Война и мир»
Альтернативно для чтения можно использовать квадратные скобки:
console.log(book[‘title’])
Для добавления и изменения свойств используется одинаковый синтаксис.
Нужно обратиться к свойству и присвоить в него значение с помощью стандартного оператора присваивания =.
Если свойство не существует, оно будет создано:
const book = {title: ‘Капитанская дочка’}
book.author = ‘А.С.Пушкин’ // добавляем новое свойство
book.title = ‘Сказка о царе Салтане’ // изменяем существующее
console.log(book) // { title: ‘Сказка о царе Салтане’, author: ‘А.С.Пушкин’}
delete book[‘author’]
delete book.title
Чаще всего свойства не удаляют, а сбрасывают значение, устанавливая undefined или подходящее по смыслу:
book.title = undefined
book[‘author’] = undefined
in operator for objects
Для проверки, есть ли свойство у объекта, используйте оператор in:
const user = {
firstName: ‘Марина’,
username: ‘zloyDuh’
}
console.log(‘firstName’ in user)// true
console.log(‘age’ in user)// false
Object.keys()
Преобразование в массив ключей объекта:
Object.keys(user) = [“name”, “age”]
Object.values()
Преобразование в массив значений объекта:
Object.values(user) = [“John”, 30]
Object.entries()
Преобразование в массив пар ключ: значение объекта:
Object.entries(user) = [ [“name”,”John”], [“age”,30] ]
Object.fromEntries()
Преобразование массива ключей и значений обратно в объект
Object.create()
Статический метод Object.create() создает новый объект, используя существующий объект в качестве прототипа вновь созданного объекта.
Object.create(proto[, propertiesObject])
proto - объект, который станет прототипом вновь созданного объекта.
propertiesObject - необязательный параметр. Если указан и не равен undefined, должен быть объектом, чьи собственные перечисляемые свойства (то есть такие, которые определены на самом объекте, а не унаследованы по цепочке прототипов) указывают дескрипторы свойств, добавляемых в новый объект.
const person = Object.create(
{},
{
name: {
value: “Asya”, // эти поля не будут итерируемыми
},
birthyear: {
value: 1991, // эти поля не будут итерируемыми
}
}
)
Object.assign()
Статический метод Object.assign(целевой объект, изначальный объект, объекты) копирует все перечисляемые собственные свойства из одного или нескольких исходных объектов в целевой объект.
Создает независимый клон объекта
const target = {};
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target ); // { b: 4, c: 5 };
target ! == source
Object.freeze()
Замораживает объект: другой код не сможет удалить или изменить никакое свойство.
Object.isFrozen()
Определяет был ли объект заморожен.
Object.defineProperty()
Object.defineProperty(obj, prop, descriptor)
Определяет новое или изменяет существующее свойство непосредственно на объекте, возвращая этот объект.
Обычное добавление свойств через присваивание создаёт свойства, которые можно увидеть через перечисление свойств, чьи значения могут быть изменены и которые могут быть удалены. Этот же метод позволяет настроить эти дополнительные детали свойства.
Дескрипторы свойств, присутствующие в объектах, бывают двух основных типов: дескрипторы данных и дескрипторы доступа. Дескриптор данных — это свойство, имеющее значение, которое может быть (а может и не быть) записываемым. Дескриптор доступа — это свойство, описываемое парой функций — геттером и сеттером. Дескриптор может быть только чем-то одним из этих двух типов; он не может быть одновременно обоими.
Object.hasOwn()
Статический метод возвращает true, если указанный объект имеет указанное свойство в качестве собственного свойства. Если свойство унаследовано или не существует, метод возвращает false.