klasi

Это старая версия документа!


Класи

class User {
  // Тіло класу
}
class User {
  // Тіло класу
}

const mango = new User();
console.log(mango); // {}

const poly = new User();
console.log(poly); // {}
  • Якщо метод конструктора (constructor) не визначити в явному вигляді, то буде створений конструктор за замовчуванням — порожня функція, яка не змінює екземпляр класу.
  • Виклик класу з оператором new призводить до створення нового об'єкта й автоматичного виклику методу constructor
  • Аргументи, які передаються при виклику new User(), стають значеннями параметрів для методу constructor.
  • метод constructor викликається в контексті створюваного екземпляра.
class User {
  constructor(name, email) {
		console.log(name, email);
  }
}

const mango = new User("Mango", "mango@mail.com"); // "Mango mango@mail.com"
console.log(mango); // {}
class User {
  constructor({ name, email }) {
    this.name = name;
    this.email = email;
  }
}

const mango = new User({
  name: "Mango",
  email: "mango@mail.com",
});
console.log(mango); // { name: "Mango", email: "mango@mail.com" }

це функції, які будуть доступні екземпляру в його прототипі. Вони оголошуються в довільному порядку після конструктора. На відміну від синтаксису методів об'єкта (вони розділяються комою), методи класу не розділені жодними спеціальними символами.

  • Методи класу додаються до спеціального об'єкта, який зберігається у властивості prototype самого класу.
class User {
  constructor({ name, email }) {
    this.name = name;
    this.email = email;
  }

  getEmail() {
    return this.email;
  }

  changeEmail(newEmail) {
    this.email = newEmail;
  }
}

Додаючи до імені властивості на початку символ #, ми робимо її приватною. Оголошення приватної властивості до ініціалізації в конструкторі є обов'язковим.

class User {
  // Необов'язкове оголошення публічних властивостей
  name;
  // Обов'язкове оголошення приватних властивостей
  #email;

  constructor({ name, email }) {
    this.name = name;
    this.#email = email;
  }
}

const mango = new User({
  name: "Mango",
  email: "mango@mail.com",
});
console.log(mango.name); // "Mango"
console.log(mango.#email); // Виникне помилка, це приватна властивість
  • /sites/data/attic/klasi.1700593747.txt.gz
  • Последнее изменение: 2023/11/21 19:09
  • tro