Свойство объекта

Оригинальное название: property

Коротко

Именованное значение внутри объекта, которое описывает его состояние: название товара, цена, статус заказа. Свойство может хранить данные напрямую или вычисляться.

Что такое «Свойство объекта»

Объект в программе объединяет данные и действия над ними. Данные хранятся в свойствах, действия описываются методами. У объекта «заказ» могут быть свойства id, status, total и методы «оплатить» или «отменить». В разных языках свойства называют полями, атрибутами или членами класса, но суть одна.

В классовых языках вроде PHP набор свойств описывается в классе, и каждый созданный объект получает свои значения. В JavaScript объект — это набор пар «ключ — значение», и свойство можно добавить в любой момент.

Свойства в классе PHP

class Product
{
    public function __construct(
        public readonly int $id,
        public string $name,
        private float $price = 0.0,
    ) {}
}

$p = new Product(15, 'Кресло');
echo $p->name;   // Кресло
$p->id = 16;      // Error: свойство только для чтения

Здесь видны три важные вещи. Тип свойства (int, string) PHP проверяет при присваивании. Модификатор private закрывает доступ снаружи класса. Модификатор readonly, доступный с PHP 8.1, запрещает менять значение после инициализации.

Свойства объекта в JavaScript

const order = { id: 7, status: 'new' };
order.status = 'paid';        // запись через точку
order['total'] = 1500;        // через квадратные скобки
console.log(Object.keys(order)); // ['id', 'status', 'total']

Открытое свойство или доступ через методы

Если свойство открыто, любой код может записать в него что угодно, например отрицательную цену. Поэтому значимые данные прячут и дают к ним доступ через методы: геттер читает значение, сеттер проверяет и записывает. Это одно из проявлений инкапсуляции. Для простых объектов-контейнеров без правил открытые типизированные свойства вполне допустимы и короче.

Не путайте со «свойствами» в 1С-Битрикс: там так называют дополнительные поля элементов инфоблока, которые администратор настраивает в админке. Это данные в базе, а не часть класса в коде.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение