OOP in Javascript
Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) — это парадигма программирования, которая использует абстракции, чтобы создавать модели, основанные на объектах реального мира. ООП использует несколько техник из ранее признанных парадигм, включая модульность, полиморфизм и инкапсуляция. На сегодняшний день многие популярные языки программирования (такие как Java, JavaScript, C#, C++, Python, PHP, Ruby и Objective-C) поддерживают ООП.
ООП представляет программное обеспечение как совокупность взаимодействующих объектов, а не набор функций или просто список команд (как в традиционном представлении). В ООП каждый объект может получать сообщения, обрабатывать данные и отправлять сообщения другим объектам. Каждый объект может быть представлен как маленькая независимая машина с отдельной ролью или ответственностью.
ООП способствует большей гибкости и поддерживаемости в программировании и широко распространена в крупномасштабном программном инжиниринге. Так как ООП настоятельно подчеркивает модульность, объектно-ориентированный код проще в разработке и проще для понимания впоследствии. Объектно-ориентированный код способствует более точному анализу, кодированию и пониманию сложных ситуаций и процедур, чем методы программирования с меньшей модульностью.
Прототипное программирование
Прототипное программирование — это модель ООП, которая не использует классы, а вместо этого сначала выполняет поведение класса и затем использует его повторно (эквивалент наследования в языках на базе классов), декорируя (или расширяя) существующие объекты прототипы. (Также называемое бесклассовое, прототипно-ориентированное, или экземплярно-ориентированное программирование.)
Оригинальный (и наиболее каноничный) пример прототипно-ориентированного языка это Self, разработанный Дэвидом Ангаром и Ренделлом Смитом. Однако бесклассовый стиль программирования стал набирать популярность позднее и был принят для данных языков программирования.
Объектно-ориентированное программирование в JavaScript
Пространство имён
Пространство имён — это контейнер, который позволяет разработчикам собрать функциональность под уникальным именем приложения. Пространство имен в JavaScript — это объект, содержащий методы, свойства и другие объекты.
Принцип работы пространства имен в JS прост: создать один глобальный объект и все переменные, методы и функции объявлять как свойства этого объекта. Также использование пространств имен снижает вероятность возникновения конфликтов имен в приложении, так как каждый объект приложения является свойством глобального объекта.
// Глобальное пространство имён
var MYAPP = MYAPP || {};
Во фрагменте кода выше мы сначала проверяем, определен ли объект MYAPP (в текущем файле или другом файле). Если да, то используем существующий глобальный объект MYAPP, иначе создаем пустой объект MYAPP, в котором мы инкапсулируем все методы, функции, переменные и объекты.
Также мы можем создать подпространство имён (учтите, что сначала нужно объявить глобальный объект):
// Подпространство имён
MYAPP.event = {};
Далее следует пример синтаксиса создания пространства имен и добавления переменных, функций и методов:
// Создаём контейнер MYAPP.commonMethod для общих методов и свойств
MYAPP.commonMethod = {
regExForName: "", // определяет регулярное выражение для валидации имени
regExForPhone: "", // определяет регулярное выражение для валидации телефона
validateName: function(name){
// Сделать что-то с name, вы можете получить доступ к переменной regExForName
// используя "this.regExForName"
},
validatePhoneNo: function(phoneNo){
// Сделать что-то с номером телефона
}
}
// Объект вместе с объявлением методов
MYAPP.event = {
addListener: function(el, type, fn) {
// код
},
removeListener: function(el, type, fn) {
// код
},
getEvent: function(e) {
// код
}
// Можно добавить другие свойства и методы
}
// Синтаксис использования метода addListener:
MYAPP.event.addListener("yourel", "type", callback);