3.2 KiB
title | localeTitle |
---|---|
Pseudoclassical Class Definition | Определение псевдоклассического класса |
Определение псевдоклассического класса происходит в 2 блоках кода вместо одного, что происходит на других языках, таких как Python и PHP.
Первый блок называется «конструкторской функцией», в которой объявляются атрибуты класса. Это аспекты класса, которые уникальны для каждого нового экземпляра. Пример с автомобилями заключается в том, что бренд, цвет и местоположение могут отличаться. Во втором блоке кода вы объявляете методы, которые будут использоваться каждым экземпляром класса. Примеры - это то, что может сделать автомобиль, двигаться вперед, останавливаться, открывать дверь.
пример
var Car = function(brand, color, location) {
this.brand = brand;
this.color = color;
this.location = location
};
Car.prototype = {
move: function() { this.location++; },
stop: function() { this.location = 0; },
};
объяснение
Причиной объявления всего класса в 2-х блоках является сохранение в памяти при запуске создания экземпляров класса. Если объявление класса было «Функциональным» стилем, то есть новая копия метода (ов), созданного для каждого экземпляра. Объявляя класс «псевдоклассический» стиль, только одна копия методов хранится в памяти.
Когда экземпляр класса попытается получить доступ к методу:
var x_car = new Car('lexus', 'white', 0);
x_car.move();
Переводчик будет на самом деле первый не найти вызываемый метод в самом объекте , так как это было сделано из конструктора функции автомобиля. Как вы можете видеть выше, нет ссылки на какой-либо из методов в функции конструктора Car. Оттуда интерпретатор ищет Car.prototype
который теперь разделяется между всеми экземплярами. Там переводчик находит метод, который был вызван!