Този урок е достъпен само в платената версия на курса.
Вземи достъп до всички уроци 💫 цена: 99лв.
Основи на уеб програмирането
Темата за обектно ориентираното програмиране в JavaScript винаги е носила един определен заряд. В този урок ще разгледаме function прототипите. Ще видим как класовете до голяма степен ги заместиха и ще уточним какво точно значи "this".
Prototype в JavaScript е механизъм, който се използва за наследяване на свойства и функционалности между обектите. Всеки обект в JavaScript има prototype. Един prototype може да наследява друг prototype. При опит за достъп до свойство на обект, JavaScript интерпретатора се опитва да намери такова свойство непосредствено в текущия prototype, ако не го намери там, то той търси свойството в прототипа на прототипа и така нататък.
Клас в JavaScript е синтактичен конструкт, който се използва за дефиниране на нов тип обекти. Той представлява способ за групиране на общи характеристики и функционалност на обектите в един тип. Класовете в JavaScript са достъпни от ECMAScript 2015 и са част от стандарта за езика.
Например, можем да дефинираме клас с име "Person", който да представлява човек с име и възраст:
class Person {
constructor(name, age) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
След това можем да създадем обект (инстанция) от този клас с ключовата дума new
:
const john = new Person('John', 25);
john.greet(); // ще изведе: "Hello, my name is John"
Ключовата дума this
в JavaScript се използва за да се обърнем към текущия контекст на изпълнение. Това означава, че this
ще сочи към различни обекти в зависимост от контекста, в който се използва. Например, ако this
се използва w метод на класс, то той ще се сочи към създадената инстанция от този клас. Ако this
се използва в глобалния scope, то той ще се сочи към глобалния обект (например, window
в браузър или global
в Node.js).
Практиката е най-бързия начин да усвоиш знания трайно. Подготвил съм ти малка задача свързана с урока.
Материали свързани с урока:
→ Файлове към урока
→ Object prototype (MDN)
→ Classes (MDN)
→ Revealing module pattern