Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 68 из 114 · 8 мин
Object.defineProperty, defineProperties, getOwnPropertyDescriptor и getOwnPropertyDescriptors: writable, enumerable, configurable, get и set.
order.id = 1 — и все заказы перепутаны!
У каждого свойства есть настройки — дескриптор. Скажем: writable: false.
Object.defineProperty()Object.defineProperty(obj, key, { value, writable, enumerable, configurable }) или с get/set. Не указанные флаги по умолчанию false."use strict";
const order = {};
Object.defineProperty(order, "id", { value: 1042, enumerable: true });
try { order.id = 1; } catch (e) { console.log(e.name); }
console.log(order.id);Object.defineProperties(){ a: {…}, b: {…} }.const cup = Object.defineProperties({}, {
ml: { value: 350, enumerable: true },
liters: { get() { return this.ml / 1000; } }
});
console.log(cup.ml, cup.liters, Object.keys(cup));Object.getOwnPropertyDescriptor()value, writable, enumerable, configurable (или get/set).console.log(Object.getOwnPropertyDescriptor([1], "length"));Object.getOwnPropertyDescriptors()Object.defineProperties даёт точную копию вместе с геттерами.const src = { get now() { return "вычислено"; } };
const copy = Object.defineProperties({}, Object.getOwnPropertyDescriptors(src));
console.log(copy.now, typeof Object.getOwnPropertyDescriptor(copy, "now").get);Свойство через defineProperty по умолчанию нельзя менять, перечислять и удалять. Флаги включай явно.
Создай order и задай ему через Object.defineProperty свойство id = 1042: только для чтения, но видимое в Object.keys (enumerable).
Выберите один ответ.
Чему по умолчанию равен writable у свойства из defineProperty, если его не указать?
Выберите один ответ.
Что делает enumerable: false?
Проверяем состояние обучения…