Объект JavaScript содержит ряд полезных методов, которые помогают разработчикам с легкостью манипулировать объектами. Давайте пройдемся по наиболее важным из них с краткими пояснениями и примерами
Object.create()
Object.create() — это метод в JavaScript, используемый для создания нового объекта с указанным объектом-прототипом и дополнительными свойствами. Он обеспечивает более детальный контроль над прототипом и свойствами объекта по сравнению с использованием литералов или конструкторов объектов.
const personPrototype = { greet() { console.log(`Hello, my name is ${this.name}`); } }; const john = Object.create(personPrototype); john.name = "John"; john.greet(); // Output: Hello, my name is John
Object.assign()
Object.assign() — это встроенный метод JavaScript, используемый для копирования значений всех перечислимых собственных свойств из одного или нескольких исходных объектов в целевой объект. Он выполняет поверхностное копирование и возвращает измененный целевой объект.
const target = { a: 1 }; const source = { b: 2, c: 3 }; const result = Object.assign(target, source); console.log(result); // Output: { a: 1, b: 2, c: 3 } console.log(target); // Output: { a: 1, b: 2, c: 3 } (target is also modified)
Object.keys()
Возвращает массив имен собственных перечислимых свойств (ключей) объекта
const obj = { a: 1, b: 2, c: 3 }; console.log(Object.keys(obj)); // Output: ['a', 'b', 'c']
Object.values()
Возвращает массив значений собственных перечислимых свойств объекта
const obj = { a: 1, b: 2, c: 3 }; console.log(Object.values(obj)); // Output: [1, 2, 3]
Object.entries()
Возвращает массив пар собственных перечислимых свойств объекта [ключ, значение]
const obj = { a: 1, b: 2, c: 3 }; console.log(Object.entries(obj)); // Output: [['a', 1], ['b', 2], ['c', 3]]
Object.freeze()
Замораживает объект, предотвращая добавление новых свойств или изменение или удаление существующих свойств
const obj = { a: 1 }; Object.freeze(obj); obj.a = 2; // No effect, because the object is frozen console.log(obj.a); // Output: 1
Object.seal()
Запечатывает объект, предотвращая добавление новых свойств, но позволяя изменять существующие свойства.
const obj = { a: 1 }; Object.seal(obj); obj.a = 2; // Allowed delete obj.a; // Not allowed console.log(obj.a); // Output: 2
Object.preventExtensions()
Предотвращает добавление новых свойств к объекту, но позволяет изменять и удалять существующие свойства
const obj = { a: 1 }; Object.preventExtensions(obj); obj.b = 2; // Not allowed console.log(obj.b); // Output: undefined
Object.getPrototypeOf()
Возвращает прототип (т. е. внутренний [[Prototype]]) указанного объекта
const obj = {}; const proto = Object.getPrototypeOf(obj); console.log(proto); // Output: {} (the default Object prototype)
Object.setPrototypeOf()
Устанавливает прототип указанного объекта.
const proto = { greet() { console.log('Hello!'); } }; const obj = {}; Object.setPrototypeOf(obj, proto); obj.greet(); // Output: 'Hello!'
Object.defineProperty()
Определяет новое свойство объекта или изменяет существующее с дополнительными параметрами для дескрипторов свойств (например, доступными для записи, настраиваемыми).
const obj = {}; Object.defineProperty(obj, 'a', { value: 42, writable: false, // Cannot modify the value }); obj.a = 100; // No effect because writable is false console.log(obj.a); // Output: 42
Object.defineProperties()
Определяет несколько свойств объекта с помощью дескрипторов свойств.
const obj = {}; Object.defineProperties(obj, { a: { value: 42, writable: false }, b: { value: 100, writable: true } }); console.log(obj.a); // Output: 42 console.log(obj.b); // Output: 100
Object.getOwnPropertyDescriptor()
Возвращает дескриптор свойства объекта.
const obj = { a: 1 }; const descriptor = Object.getOwnPropertyDescriptor(obj, 'a'); console.log(descriptor); // Output: { value: 1, writable: true, enumerable: true, configurable: true }
Object.getOwnPropertyDescriptors()
Возвращает объект, содержащий все дескрипторы свойств собственных свойств объекта
const obj = { a: 1 }; const descriptors = Object.getOwnPropertyDescriptors(obj); console.log(descriptors); // Output: { a: { value: 1, writable: true, enumerable: true, configurable: true } }
Object.getOwnPropertyNames()
Возвращает массив всех свойств (включая неперечислимые), найденных непосредственно в объекте.
const obj = { a: 1 }; Object.defineProperty(obj, 'b', { value: 2, enumerable: false }); console.log(Object.getOwnPropertyNames(obj)); // Output: ['a', 'b']
Object.is()
Сравнивает, совпадают ли два значения (например, ===, но обрабатывает особые случаи, например NaN)
console.log(Object.is(NaN, NaN)); // Output: true console.log(Object.is( 0, -0)); // Output: false
Object.isFrozen()
Проверяет, заморожен ли объект
const obj = Object.freeze({ a: 1 }); console.log(Object.isFrozen(obj)); // Output: true
Object.isSealed()
Проверяет, запечатан ли объект.
const obj = Object.seal({ a: 1 }); console.log(Object.isSealed(obj)); // Output: true
Object.isExtensible()
Проверяет, можно ли добавить к объекту новые свойства.
const obj = { a: 1 }; Object.preventExtensions(obj); console.log(Object.isExtensible(obj)); // Output: false
Object.fromEntries()
Преобразует массив пар ключ-значение в объект
const entries = [['a', 1], ['b', 2]]; const obj = Object.fromEntries(entries); console.log(obj); // Output: { a: 1, b: 2 }
Object.hasOwnProperty()
Проверяет, имеет ли объект указанное свойство как собственное (не унаследованное)
const obj = { a: 1 }; console.log(obj.hasOwnProperty('a')); // Output: true
Object.hasOwn()
Object.hasOwn() — это новый метод, представленный в ES2022 как альтернатива Object.hasOwnProperty(). Он проверяет, имеет ли объект прямое (собственное) свойство с указанным ключом, не просматривая цепочку прототипов.
const obj = { name: 'Alice', age: 25 }; console.log(Object.hasOwn(obj, 'name')); // true console.log(Object.hasOwn(obj, 'gender')); // false
Object.groupBy
Object.groupBy — это относительно новая функция, предложенная для JavaScript в ECMAScript 2024, которая позволяет группировать объекты на основе общего критерия. Он еще не широко доступен во всех средах, поэтому может не работать во многих браузерах или движках JavaScript, пока не будет полностью реализован.
const array = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 25 }, { name: 'David', age: 30 }, ]; // Group objects by age const groupedByAge = Object.groupBy(array, item => item.age); console.log(groupedByAge); /* Expected Output: { 25: [ { name: 'Alice', age: 25 }, { name: 'Charlie', age: 25 } ], 30: [ { name: 'Bob', age: 30 }, { name: 'David', age: 30 } ] } */
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3