Нека вземем пример, за да разберем раждането на конструкторите в Javascript. Да предположим, че сте помолени да създадете обект на служител и той трябва да има 4 свойства firstName, lastName, gender и designation. Добре! ти каза, че няма проблем.
var employee1={};
employee1.firstName="Anoop";
employee1.lastName="Rai";
employee1.gender="M";
employee1.designation="Software Engineer";
По-горе е най-простият начин, първо сте създали празен обект и след това сте асоциирали всичките 4 свойства към обекта (разбира се, можете също да създадете същото чрез inline). Ами ако бъдете помолени отново да създадете друг обект на служител със същите свойства.
var employee2={};
employee1.firstName="Ram";
employee1.lastName="Kumar";
employee1.gender="M";
employee1.designation="Associate Software Engineer";
Изглежда, че изобщо няма проблем. Сега какво ще стане, ако бъдете попитани, че има общо 100 служители и току-що сте създали 2 от тях, обикновено трябва да създадете още 98 обекта за служители. Сега няма да създавате обекти като по-горе, тъй като изглежда досадно. Хванах те! нека създадем фабричен метод, който ще се извиква произволен брой пъти и ще създава обекти и след това ще ни го връща. да! пишете веднъж и ще се използва много пъти.
function createEmployeeObject(firstName, lastName, gender, designation){
var employee={};
employee.firstName=firstName;
employee.lastName=lastName;
employee.gender=gender;
employee.designation=designation;
return employee;
}
var employee3=createEmployeeObject("Harry", "Dsouza", "M", "Project Manager");
Много удобен начин и без дублиращи се кодове. Просто извикайте функцията createEmployeeObject с вашите аргументи и в замяна получавате вашия обект. Ами ако имаме няколко вида обекти, да речем отдел. Тогава също ще имаме функция, която ще създаде обект на отдел и ще го върне.
И така, какво е общото в тези видове функции. То е:-
създаване на празен обект
var myObj={};
връщащ обект след попълването му
връщане на myObj;
Създаването на празен обект и връщането на обект е обичайно за всички функции, които създават обекти. Javascript създаде пряк път, който ви позволява да не пишете тези редове, когато използвате функция, която създава обекти. Така че тези 2 реда могат да бъдат пропуснати. Начинът да направите това е да използвате конструктори.
Използването на функции за създаване на обекти е доста често срещано в Javascript, така че Javascript предоставя пряк път, който ви позволява да пишете функции за създаване на обекти. Тези специални функции се наричат функции на конструктора. Конструкторите са функции, които ви позволяват да попълвате обекта, който трябва да създадете.
function createEmployeeObject(firstName, lastName, gender, designation){
this.firstName=firstName;
this.lastName=lastName;
this.gender=gender;
this.designation=designation;
}
var employee4=new createEmployeeObject("Alan", "Marks", "F", "Business Analyst");
Трябва да знаете за тази ключова дума. Тя сочи към текущия обект. Не забравяйте, че във функциите на конструктора Javascript създава празен обект за нас, така че това всъщност сочи само към този обект. Функциите на Javascript Constructor автоматично връщат обекта, след като бъде попълнен. Сега как да кажете на Javascript, че дадена функция се извиква в режим Constructor, това е новата ключова дума, която казва на Javascript да третира функция като функция Constructor. Всеки път, когато имате нужда от обект, използвайте нова ключова дума и след това извикайте функция, след което тази функция подготвя обект за нас и го връща.
Въпреки че Javascript не е базиран на клас, трябва да се погрижите за името на функцията Constructor. не е добре да използвате камилска кутия, използвайте обикновена.
function Employee(firstName, lastName, gender, designation){
this.firstName=firstName;
this.lastName=lastName;
this.gender=gender;
this.designation=designation;
}
var employee5=new Employee("Mark", "Watson", "M", "DBA");
http://jkoder.com/javascript-constructors-why-it-should-be-used-object-oriented-programming-in-javascript/
person
Anoop Rai
schedule
01.09.2016