Прототип в JavaScript

06.01.2020

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

Как же это реализовано в JavaScript? Каждый объект в JavaScript имеет свойство - prototype, которое ссылается на другой объект, называемый прототипом объекта. Объект использует прототип для наследования свойств и методов. Приведу примеры как можно создать объекты в JavaScript:

let car = {};
let person = new Object();  

Обе переменные будут иметь тип object. Так как массивы в JavaScript тоже являются объектами, приведем примеры создания массивов.

let list0 = [];
let list1 = new Array();    

В качестве прототипа будет выступать объект - Array. Давайте проверим это

car.__proto__ == Object.prototype;			// true
person.__proto__ == new Object().prototype; // true
list.__proto__ == Object.prototype;			// false
list.__prototype == Array.prototype;		// true
list1.prototype == new Array().__proto__;	// true

Все методы и свойства объекта-прототипа будут доступны объекту с этим прототипом. Object.prototype является базовым прототипом для всех объектов. У объекта Object.prototype нету прототипа, он отсутствует.

Свойство __proto__ является не стандартным, но все браузеры поддерживают его. Более правильно будет использовать метод Object.g etPrototypeOf(new Object()).

Вместо использования new для создания объектов, можно применять Object.create(). Первый аргумент для метода используется как прототип.

const car = Object.create({});
const list = Object.create(Array);  

Вы можете проверить прототип объекта используя метод isPrototypeOf().

Array.isPrototypeOf(list);

В следующей статье

В ES6 появились классы. С ними мы и познакомимся в следующей статье.

#jsbook#javascript

Еженедельная рассылка новостей

Классы в JavaScript

Функции в JavaScript