Муқаддима ба синфҳо ва объектҳо дар JavaScript
Акнун мо ООП-ро дар JavaScript меомӯзем. Биёед мисоле аз ҳаётро дида бароем, сипас онро ба JavaScript гузаронем.
Чун мисол мошинро мегирем. Дар он чархҳо, ранг, навъи кузов, ҳаҷми муҳаррик ва ғайраҳо мавҷуданд. Илова бар ин, ронанда метавонад ба он фармонҳо диҳад: раван, ист, гардиш ба рост, чап ва ғайра.
Метавон гуфт, ки чанд синф аз мошинҳо мавҷуданд, ки хосиятҳои умумӣ доранд (ҳамаашон чархҳо доранд ва ба ҳамаашон метавон фармон дод).
Мошини мушаххасе, ки дар кӯча истодааст - ин намунандаи ин синф аст, ё, ба дигар сухан, объект аз ин синф. Ҳамаи объектҳои ин синф хосиятҳо доранд: шумораи чархҳо, ранг, навъи кузов ва методҳо: раван, ист, гардиш ба рост, чап.
Ба дигар сухан худи синф - ин нақшаест, ки тибқи он дар корхона мошинҳо сохта мешаванд. Объект ҳамон мошини сохташуда тибқи ин нақшаҳост.
Дар JavaScript синф бо истифода аз калимаи калидӣ
class сохта мешавад, ки пас аз он номи
ин синф омадааст. Биёед синфи Car созем:
class Car {
// дар ин ҷо код, яъне нақшаи JavaScript-и мошин
}
Акнун дар нақшаи худ муайян кунем, ки ҳар як мошин, ки тибқи ин нақша сохта шавад, хосият барои ранг ва хосият барои миқдори сӯзишворӣ дошта бошад.
Барои ин дар дохили синф хосияти
color ва хосияти fuel менависем:
class Car {
color; // ранг аз мошин
fuel; // миқдори сӯзишворӣ
}
Биёед акнун методҳои синфи худро созем.
Дар JavaScript методҳо ба функсияҳои оддӣ монанданд,
танҳо бе истифода аз калимаи калидӣ function эълон карда мешаванд.
Чун ки дар боло зикр шуд, мошини мо метавонад биравад, метавонад гардиш кунад, метавонад ист кунад. Методҳои мувофиқро дар синфи худ месозем:
class Car {
color; // ранг аз мошин
fuel; // миқдори сӯзишворӣ
// Фармони раван:
go() {
// баъзе кодҳои JavaScript
}
// Фармони гардиш:
turn() {
// баъзе кодҳои JavaScript
}
// Фармони ист:
stop() {
// баъзе кодҳои JavaScript
}
}
Мо бо шумо нақшаи мошини худро сохтем. Акнун ба корхона рафта зарур аст, ки объекти ин синф сохта шавад (яъне мошини мушаххас).
Дар JavaScript ин бо истифода аз калимаи калидӣ
new анҷом дода мешавад, ки пас аз он номи синф навишта мешавад:
new Car; // фармон медиҳем, ки корхона мошин созад
Аммо, агар танҳо объекти синф сохта шавад - ин ба ҳеҷ чиз намеояд (ин монанд ба он аст, ки, масалан, массиверо эълон карда ҳеҷ куҷо нанависед). Ба мо тағирёбандае барои нигоҳ доштани ин объект лозим аст.
Бигзор ин тағирёбанда myCar ном дошта бошад
- объекти сохтаи худро ба он менависем:
let myCar = new Car;
Пас аз сохтани мошин ба хосиятҳои он муроҷиат кардан мумкин аст. Муроҷиат ба онҳо аз тариқи нуқта рӯй медиҳад. Биёед хосиятҳои объекти худро муқаррар кунем:
let myCar = new Car; // фармон медиҳем, ки корхона мошин созад
myCar.color = 'red'; // ба ранги сурх ранг мекунем
myCar.fuel = 50; // сӯзишворӣ мерезем
Ҳама, мошини мо сохта, ранг карда ва ба сӯзишворӣ пур карда шуд. Акнун мо метавонем ба он фармонҳо тавассути методҳои ин мошин диҳем.
Муроҷиат ба методҳо низ аз тариқи нуқта рӯй медиҳад, аммо, аз хосият фарқ карда, пас аз nomi метод қавсҳои гирд навишта мешаванд. Биёед ба объекти худ фармон диҳем:
myCar.go();
myCar.turn();
myCar.stop();