Прототип конструктора (Constructor prototype) в javascript

3

Constructor prototypes

Итак, мы знаем, что все объекты в javascript кроме корневого объекта имеют прототипы или родителя.

Правильный способ получить прототип объекта это использовать Object.getPrototypeOf(), передав ему в качестве аргумента объект, прототип которого мы хотим получить.

Object.getPrototypeOf(myObj);
//myObj.__proto__ (parent of myObj)
//Constructor.prototype == myObj.__proto__

Теперь обратим внимание на то, что у конструкторов тоже есть прототип.

function Circle(radius) {
    this.radius = radiusl
}

const circle = new Circle(1);

Вот например, у нас есть фукнция-конструктор. И вы знаете, что в javascript все функции являются объектами. Т.к. у них есть свойства и методы.

Среди прочих, у них есть свойство prototype.

Что за свойство prototype?

Prototype — это объект, который будет использоваться как родитель объектов созданных функцией-конструктором Circle.

Например, вот есть наш объект myObj и он создан с помощью конструктора Constructor. У конструктора есть проперть prototype. И она содержит тоже самое, что и myObj.__proto__. т.е. объект, который мы будем использовать как родитель объектов, созданных с помощью этого конструктора.

Давайте посмотрим на еще одном примере.

Создадим пустой объект.

let obj = {};
//obj.__proto__ (baseObject)

У этого объекта есть прототип, который является его родителем. Там мы увидим то, что мы называем базовым объектом. Итак, мы знаем, что наш объект быс создан функцией-конструктором Object. Т.е. когда мы используем литерал для создания объекта, под катом это преобразуется в new Object. Это наш конструктор. У этого конструктора есть свойство prototype. А оно в свою очередь является объектом, который будет использоваться как прототип для всех объектов, созданного с помощью этого конструктора.
Т.е.прототип конструктора будет равен прототипу объекта созданного с помощью этого конструктора.

obj.__proto__ === Object.prototype; //true

Давайте посмотрим на другой пример.
Создадим пустой массив. Когда мы используем литерал массива для его создания, то под катом будет вызван конструктор массивов Array. У этого конструктора есть свойство прототип, который ссылается на array base базовый массив, который равен прототипу созданного массива.

let array = [];
array.__proto__ === Array.prototype;

Ну и возьмём на последок наш объект circle. У него такой же прототим как у Circle.prototype.

You might also like More from author

Leave A Reply

Your email address will not be published.