Объекты и прототипы
Создадим объект 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.