Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 67 из 114 · 10 мин
Object.hasOwn, hasOwnProperty, propertyIsEnumerable, getOwnPropertyNames, getOwnPropertySymbols, Object.assign и Object.groupBy.
"toString" in order — true! Значит, у заказа есть поле toString?
Оно унаследовано. Свои свойства проверяют через Object.hasOwn.
Object.hasOwn()Object.hasOwn(obj, key) — true, только если свойство принадлежит самому объекту.const order = { item: "Пенал" };
console.log("toString" in order, Object.hasOwn(order, "toString"), Object.hasOwn(order, "item"));hasOwnProperty()obj.hasOwnProperty(key) — то же, что Object.hasOwn, но ломается у объектов без прототипа. В новом коде — Object.hasOwn.console.log({ a: 1 }.hasOwnProperty("a"));propertyIsEnumerable()for…in и Object.keys.const arr = [1];
console.log(arr.propertyIsEnumerable(0), arr.propertyIsEnumerable("length"));Object.getOwnPropertyNames()Object.keys).console.log(Object.keys([1, 2]), Object.getOwnPropertyNames([1, 2]));Object.getOwnPropertySymbols()keys, ни getOwnPropertyNames.const id = Symbol("id");
const o = { [id]: 7, name: "Пенал" };
console.log(Object.keys(o), Object.getOwnPropertySymbols(o).length);Object.assign()Object.assign(target, ...sources) копирует свои перечисляемые свойства в target и возвращает его. Копия неглубокая.const defaults = { size: "M", sugar: 0 };
const order = Object.assign({}, defaults, { sugar: 2 });
console.log(order);Object.groupBy()Object.groupBy(items, fn) — объект, где ключ — результат fn, а значение — массив элементов с этим ключом.const catalog = [{ n: "Блокнот", c: "office" }, { n: "Стикер", c: "dessert" }, { n: "Пенал", c: "office" }];
console.log(Object.groupBy(catalog, (d) => d.c));Проверка своих свойств — Object.hasOwn. Оператор in смотрит ещё и в прототип.
Сгруппируй catalog по category через Object.groupBy в groups, и сделай order — копию defaults, поверх которой наложен custom, через Object.assign.
Выберите один ответ.
Что вернут "toString" in {} и Object.hasOwn({}, "toString")?
Выберите один ответ.
Глубокая ли копия у Object.assign({}, obj)?
Проверяем состояние обучения…