JavaScript Prototype: Полное руководство

Объекты и прототипы

Создадим объект PERSON со свойствами NAME, AGE и методом GREET:

const PERSON = {
  NAME: "MAXIM",
  AGE: 25,
  GREET: function() { console.log("Greet"); }
};

Доступ к свойствам осуществляется так: PERSON.NAME, PERSON.AGE, PERSON.GREET(). Обращение к несуществующему свойству приведёт к ошибке. Однако, PERSON.toString() работает, хотя мы его не определяли. Это происходит благодаря прототипу. Свойство __proto__ объекта указывает на его прототип — родительский объект, предоставляющий дополнительные методы и свойства. toString() — один из таких методов.

Создание объекта с помощью new Object()

Альтернативный способ создания объекта:

const PERSON = new Object();
PERSON.NAME = "MAXIM";
PERSON.AGE = 25;
PERSON.GREET = function() { console.log("Greet"); };

Здесь PERSON является экземпляром класса Object. Прототип Object предоставляет методы, такие как toString(). В JavaScript почти всё — объекты.

Работа с прототипом

Добавим метод SAYHELLO к прототипу Object:

Object.prototype.SAYHELLO = function() {
  console.log("Hello!");
};

Теперь PERSON.SAYHELLO() будет работать, так как метод добавлен к прототипу Object и доступен всем объектам, основанным на Object.

Наследование прототипов

Создадим объект LENA, используя PERSON как прототип:

const LENA = Object.create(PERSON);

LENA наследует методы и свойства PERSON, включая GREET, toString(), и SAYHELLO. Собственное свойство NAME в LENA перекроет свойство NAME из прототипа. Поиск свойств и методов происходит сверху вниз по цепочке прототипов.

Пример со строкой

Строки в JavaScript — объекты. Например:

const STR = "I am string";

STR.length и STR.bold() — примеры свойств и методов строки. Строка также имеет прототип и цепочку наследования.

Прототипы — мощный механизм наследования в JavaScript. Понимание прототипов важно для эффективного использования языка. Они позволяют создавать объекты, наследующие свойства и методы, экономя код и упрощая разработку. Прототипы являются неотъемлемой частью функционирования объектов в JavaScript.

Что будем искать? Например,программа