Поля классов в 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