Поля классов в JavaScript 🔥
В JavaScript есть два типа полей объекта (свойства и методы):
1️. Публичный 👭
Доступен откуда угодно. Они составляют внешний интерфейс. До сих пор мы использовали только общедоступные свойства и методы.
2️. Частный 🔐
Доступен только изнутри класса. Это для внутреннего интерфейса.
Поля класса по умолчанию являются общедоступными, но частные члены класса могут быть созданы с использованием префикса хэш #
.
Синтаксис поля класса
- Вы можете определять новых частных участников
- Вы получите ошибку, если нарушите правило доступа
- Он имеет общедоступные и частные статические поля, которые позволяют объявлять член класса, к которому можно получить доступ без создания экземпляра класса.
Использование переменной типа _variableName
означает, что мы можем использовать эту переменную только в классе.
пример
class GetDateTime { _start = 0
getDate() { if(true) { this._start = new Date() } } }
Но это не мешает общедоступной _start
переменной. Оформить заказ здесь 👇
let date = new GetDateTime()
console.log(date._start)
// Thu Jun 24 2021 16:36:06 GMT+0530 (India Standard Time)
Чтобы создать настоящий частный экземпляр, вы можете использовать #
для создания частных переменных.
📝 ПРИМЕЧАНИЕ: вам просто нужно заменить _
на #
class GetDateTime { #start = 0
getDate() { if(true) { this.#start = new Date() } } }
let date = new GetDateTime() console.log(date.#start) // Uncaught SyntaxError: Private field '#start' must be declared in an enclosing class
Инкапсуляция обеспечивается языком.
Он также поддерживает частные методы.
Пример:
class GetDateTime { #start = 0
getDate() { if(true) { return this.#getNow() } }
#getNow() { this.#start = new Date() } }
let date = new GetDateTime() console.log(date.getDate()) // Thu Jun 24 2021 16:55:32 GMT+0530 (India Standard Time)
Частные методы могут быть доступны только внутри класса.
Частные статические поля
Вы также можете создать частную статическую переменную.
По-прежнему сохраняется ограничение на вызов статических переменных только статическими методами.
class GetDateTime { static #start = 0
static getDate() { if(true) { this.#start = new Date() return this.#start } } } console.log(GetDateTime.getDate()) // Thu Jun 24 2021 17:53:02 GMT+0530 (India Standard Time)
Ссылка 🧐
🌟 Twitter | 👩🏻💻 suprabha.me | 🌟 Instagram