0Pricing
JavaScript Academy · Урок

Цепочка прототипов и основы собственных свойств

Изучите основы цепочки прототипов; проверяйте собственные и унаследованные свойства; используйте Object.create и задавайте простые дескрипторы

«Цепочка прототипов и основы собственных свойств» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 1 из 2. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 2 уроков всего.

Введение в прототипы

Цель: понять, как объекты наследуют свойства через цепочку прототипов и как отличать собственные ключи от унаследованных.

  • Цепочка прототипов
  • Собственные ключи и ключи, найденные через оператор принадлежности
  • Object.create
  • Основы дескрипторов
Цепочка прототипов и основы собственных свойств — иллюстрация 1

Поиск в прототипе

Если ключ не найден в объекте, JavaScript ищет его в прототипе объекта, например в Object.prototype.

// A simple object
const user = { name: "Ayla" };

// The prototype is another object used for fallback lookups
const proto = Object.getPrototypeOf(user);

console.log("name:", user.name);
console.log("has toString?", typeof user.toString === "function");
console.log("proto same as Object.prototype?", proto === Object.prototype);
Цепочка прототипов и основы собственных свойств — иллюстрация 2

Собственные и унаследованные ключи

Object.hasOwn(объект, ключ) возвращает true только для собственных ключей. Проверка «ключ» в объекте также учитывает унаследованные ключи.

// Own vs inherited checks
const point = { x: 1 };

// "in" sees own or inherited
console.log("x in point:", "x" in point);
console.log("toString in point:", "toString" in point);

// Only own keys
console.log("hasOwn x:", Object.hasOwn(point, "x"));
console.log("hasOwn toString:", Object.hasOwn(point, "toString"));
Цепочка прототипов и основы собственных свойств — иллюстрация 3

Основы Object.create

Object.create(proto) создаёт объект, наследующий свойства от proto.

// Use Object.create to set a prototype
const animal = { kind: "animal" };

// pet inherits from animal
const pet = Object.create(animal);
pet.name = "Milo";

console.log("pet name:", pet.name);
console.log("pet kind (inherited):", pet.kind);
console.log("hasOwn kind?", Object.hasOwn(pet, "kind"));
Цепочка прототипов и основы собственных свойств — иллюстрация 4

Дескрипторы (кратко)

Object.defineProperty позволяет задавать для ключа такие признаки, как доступность для записи и перечисляемость.

// Define simple descriptors
const prefs = {};
Object.defineProperty(prefs, "theme", {
  value: "dark",
  writable: false,
  enumerable: true
});

// Try to change (silently fails in non-strict)
prefs.theme = "light";

console.log("theme:", prefs.theme);

// List keys: theme is enumerable
console.log("keys:", Object.keys(prefs));
Цепочка прототипов и основы собственных свойств — иллюстрация 5

Советы и контрольный список

Советы:

  • Используйте Object.hasOwn(объект, ключ), чтобы проверять собственные ключи.
  • Для создания небольших прототипов отдавайте предпочтение Object.create(proto).
  • Поначалу используйте дескрипторы минимально: значений по умолчанию достаточно.
Цепочка прототипов и основы собственных свойств — иллюстрация 6

Проверка собственных и унаследованных ключей

Быстрая проверка: проверка собственного свойства.

Цепочка прототипов и основы собственных свойств — иллюстрация 7

Повторение

Повторение: движок ищет отсутствующие ключи в прототипе. Используйте hasOwn только для собственных ключей, Object.create — для задания прототипа, а дескрипторы — для управления основными признаками.

Цепочка прототипов и основы собственных свойств — иллюстрация 8

Часто задаваемые вопросы

Урок «Цепочка прототипов и основы собственных свойств» бесплатный?

Да — полный текст урока «Цепочка прототипов и основы собственных свойств» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 2 уроков всего.

Чему я научусь в уроке «Цепочка прототипов и основы собственных свойств»?

Изучите основы цепочки прототипов; проверяйте собственные и унаследованные свойства; используйте Object.create и задавайте простые дескрипторы Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать JavaScript Academy?

Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 2.

Сколько времени занимает урок «Цепочка прототипов и основы собственных свойств»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке JavaScript Academy?

Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Цепочка прототипов и основы собственных свойств
  2. Синтаксис классов (обзор): constructor, методы, static, extends
← Назад к JavaScript Academy