Классикалық объектно-ориентирленген бағдарламалау (ООБ) объектілері — бұл деректер мен әдістердің коллекциясы, осы деректермен жүзеге асатын. JavaScript-бұл тіл, типтік негізделген, және класс сияқты ұғымдар C немесе Java тілдерінде анықтауы жоқ.
Класс орнына JavaScript-та функциялар пайдаланады. Объектінің жеке деректерін қамтитын өрістің аты және тегі. Аттарды белгілеудің екі түрі бар: "Аты Тегі" немесе "Тегі, Аты". Объектілер мен функциялардың көмегімен мыналарды жасауға болады:
function makePerson(first, last) { return {
first: first, last: last
} }
function personFullName(person) { return person.first + ' ' + person.last;
}
function personFullNameReversed(person) { return person.last + ', ' + person.first
}
s = makePerson("Simon", "Willison"); personFullName(s); // Simon Willison personFullNameReversed(s); // Willison, Simon
Жұмыс істейді, бірақ бұл код жарамсыз. Мұндай тәсілмен жаһандық объектпен ондаған функциялар болады. Бұларды объектіге функцияны тіркеп түзетуге болады. Бұл барлық функциялары олар объектілер:
function makePerson(first, last) { return {
first: first, last: last,
fullName: function() {
return this.first + ' ' + this.last;
},
fullNameReversed: function() { return this.last + ', ' + this.first;
} } }
s = makePerson("Simon", "Willison") s.fullName(); // Simon Willison s.fullNameReversed(); // Willison, Simon
Ал мыналар жаңалар: 'this' кілт сөзі. Егер 'this' функциялар ішінде пайдаланылса, ол ағымдағы объектте сілтеме жасайды. Кілт сөздер мәні функцияларды шақыру әдістеріне байланысты болады. Егер функцияны шақыру, объектіге үндеу жолдау, нүкте арқылы немесе тік төртбұрышты жақшалар болса, онда 'this' осы объектіге тең болады. Өзге жағдайда 'this' жаһандық объектіге сілтеме болады. Бұл жиі қателіктерге әкеледі. Мысалы:
s = makePerson("Simon", "Willison") var fullName = s.fullName; fullName(); // undefined undefined
fullName() шақыру кезінде, 'this' жаһандық объектіге сілтеме алады. Ал жаһандық объектіде айнымалылар first және last анықталған жоқ, онда екі undefined иеленеміз.
'this' кілт сөздер ерекшелігін пайдаланып makePerson функция кодын жақсартуға болады:
function Person(first, last) { this.first = first;
this.last = last; this.fullName = function() {
return this.first + ' ' + this.last;
};
this.fullNameReversed = function() { return this.last + ', ' + this.first;
Достарыңызбен бөлісу: |