Объекты - это все, что люди хотят изучать, от самых простых целых чисел до сложных самолетов и т. Д., что может не только представлять собой конкретные вещи, но и абстрактные правила, планы или события. -цитируется из энциклопедии Baidu
Объектно-ориентированное программирование является самой популярной моделью программирования в настоящее время. Но разочаровывает, что, как наиболее широко используемый фронт-элитный JavaScript, не поддерживает объектно-ориентированный.
JavaScript не имеет символов управления доступом, он не определяет класс ключевых слов, не поддерживает наследственные Extend или Colon, и он не использует виртуальные для поддержки виртуальных функций. Тем не менее, JavaScript - гибкий язык. Давайте посмотрим на то, как JavaScript без ключевого класса реализует определение класса и создает объекты.
Определите класс и создайте объект экземпляра класса
В JavaScript мы используем функцию для определения класса, следующим образом:
Кода -копия выглядит следующим образом:
Функциональная форма ()
{
var x = 1;
var y = 2;
}
Вы могли бы сказать, сомневаться? Разве это не определяющая функция? Правильно, это определяющая функция. Мы определяем функцию формы и инициализируем x и y. Однако, если вы посмотрите на это с другой точки зрения, это должно определить класс формы, который содержит два свойства x и y, а начальные значения составляют 1 и 2 соответственно. Однако ключевыми словами, которые мы определяем класс, являются функцией, а не классом.
Тогда мы можем создать объект ашфейного класса формы следующим образом:
Кода -копия выглядит следующим образом:
var ashape = new Shape ();
Определить государственную и частную недвижимость
Мы создали объект Ashape, но когда мы пытаемся получить доступ к его свойствам, мы получаем такую ошибку, как это:
Кода -копия выглядит следующим образом:
ashape.x = 1;
Это показывает, что свойства, определенные с VAR, являются частными. Нам нужно использовать это ключевое слово для определения публичных атрибутов.
Кода -копия выглядит следующим образом:
Функциональная форма ()
{
this.x = 1;
this.y = 2;
}
Таким образом, мы можем получить доступ к свойствам формы, например:
Кода -копия выглядит следующим образом:
ashape.x = 2;
Хорошо, мы можем суммировать из приведенного выше кода: Использование VAR для определения личного атрибута класса и использования его для определения публичного атрибута класса.
Определить государственные и частные методы
В JavaScript функция является экземпляром класса функции, и функция косвенно унаследована от объекта, поэтому функция также является объектом. Поэтому мы можем создать функцию, используя метод назначения. Конечно, мы также можем назначить функцию переменной атрибута класса. Затем эту переменную атрибута можно назвать методом, потому что это исполняемая функция. Код заключается в следующем:
Кода -копия выглядит следующим образом:
Функциональная форма ()
{
var x = 0;
var y = 1;
this.draw = function ()
{
// print;
};
}
Мы определяем рисование в приведенном выше коде и назначаем функцию. Ниже мы можем назвать эту функцию через Ashape, который называется публичным методом в ООП, такой как:
Кода -копия выглядит следующим образом:
ashape.draw ();
Если определено с помощью VAR, то ничья становится частным, который называется частным методом в ООП, например:
Кода -копия выглядит следующим образом:
Функциональная форма ()
{
var x = 0;
var y = 1;
var draw = function ()
{
// print;
};
}
Таким образом, вы не можете использовать Ashape.Draw, чтобы назвать эту функцию.
Конструктор
JavaScript не поддерживает ООП, поэтому, конечно, нет конструктора. Тем не менее, мы можем имитировать конструктор сами и сделать объект автоматически вызвать, когда он создается. Код заключается в следующем:
Кода -копия выглядит следующим образом:
Функциональная форма ()
{
var init = function ()
{
// код конструктора
};
init ();
}
В конце формы мы искусственно назвали функцию init. Затем при создании объекта формы init всегда будет называется автоматически, что может имитировать наш конструктор.
Конструктор с параметрами
Как заставить конструктор принять параметры? На самом деле, это очень просто. Просто напишите параметры, которые должны быть переданы в список параметров функции, такие как:
Кода -копия выглядит следующим образом:
форма функции (AX, AY)
{
var x = 0;
var y = 0;
var init = function ()
{
//Конструктор
x = ax;
y = ay;
};
init ();
}
Таким образом, мы можем так создать объект:
Кода -копия выглядит следующим образом:
var ashape = новая форма (0,1);
Статические свойства и статические методы
Как определить статические свойства и методы в JavaScript? Как показано ниже:
Кода -копия выглядит следующим образом:
форма функции (AX, AY)
{
var x = 0;
var y = 0;
var init = function ()
{
//Конструктор
x = ax;
y = ay;
};
init ();
}
SHAME.Count = 0; // Определите статическое количество свойств, которое принадлежит классу, а не к объекту.
Shape.staticmethod = function () {}; // определить статический метод
Со статическими свойствами и методами мы можем получить к нему доступ к именам классов следующим образом:
Кода -копия выглядит следующим образом:
предупреждение (Ashape.count);
ashape.staticmethod ();
Примечание: статические свойства и методы оба являются общедоступными. Пока что я не знаю, как сделать статические свойства и методы частными ~
Получить доступ к публичным и частным свойствам этого класса методом
Доступ к собственным свойствам в методах класса. Методы доступа JavaScript для публичных и частных свойств различны. Пожалуйста, смотрите следующий код:
Кода -копия выглядит следующим образом:
форма функции (AX, AY)
{
var x = 0;
var y = 0;
this.gx = 0;
this.gy = 0;
var init = function ()
{
x = ax; // добавить частные атрибуты и напрямую напишите имя переменной
y = ay;
this.gx = ax; // Чтобы получить доступ к общедоступным атрибутам, вам необходимо добавить это перед именем переменной.
this.gy = ay;
};
init ();
}
Что следует отметить об этом
Согласно моему опыту, это в классе не всегда указывает на наш объект. Основная причина заключается в том, что JavaScript не является языком ООП, а функции и классы определяются функциями, что, конечно, вызовет некоторые незначительные проблемы.
Ситуация, в которой этот указатель неправильно указывает, обычно находится в обработке событий. Мы хотим, чтобы функция участника определенного объекта отвечала на событие. Когда событие будет вызвано, система будет называть нашу функцию члена. Тем не менее, прошедший этот указатель больше не является нашим собственным объектом. Конечно, в настоящее время это будет ошибкой называть это в функции члена.
Решение состоит в том, чтобы сохранить это в частную собственность в начале класса определения. Позже мы можем использовать это свойство вместо этого. Я использую этот указатель с этим методом, довольно безопасно и беззаботно ~
Давайте изменим код для решения этой проблемы. Сравнивая код в части 6, вы обязательно поймете:
Кода -копия выглядит следующим образом:
форма функции (AX, AY)
{
var _this = это; // Сохранить это и использовать это вместо этого в будущем, чтобы вы не были запутаны этим
var x = 0;
var y = 0;
_This.gx = 0;
_This.gy = 0;
var init = function ()
{
x = ax; // добавить частные атрибуты и напрямую напишите имя переменной
y = ay;
_This.gx = ax; // Чтобы получить доступ к общедоступным атрибутам, вам необходимо добавить это перед именем переменной.
_This.gy = ay;
};
init ();
}
Выше мы говорили о том, как определить классы в JavaScript, создавать объекты класса, создавать публичные и частные свойства и методы, создавать статические свойства и методы, имитировать конструкторы и обсудить эту склонность к ошибке.
Это все о реализации ООП в JavaScript. Вышеуказанное является наиболее практичным содержанием. Как правило, JavaScript определяет классы, и достаточно использования приведенного выше кода для создания объектов. Конечно, вы также можете использовать Mootools или прототип для определения классов и создания объектов. Я использовал платформу для мутообусов, и это очень хорошо. Это более идеально подходит для моделирования класса JavaScript и поддерживает наследство класса. Заинтересованные читатели могут попробовать. Конечно, если вы используете структуру, вам необходимо включить соответствующие файлы заголовков JS на свою веб -страницу. Поэтому я все еще надеюсь, что читатели могут создавать классы без фреймворта. Таким образом, код более эффективен, и вы также можете увидеть, что не трудно создать простой класс ~