---
title: Работа с объектами
seo:
  title: Работа с объектами — React Developer
  description: Тема «Работа с объектами» для собеседования React Developer. Почему obj.someprop.x приводит к ошибке? Что такое прототип объекта?
---

[Все темы React Developer](/react-developer)

## <strong>Почему</strong> <code>obj&#46;someprop&#46;x</code> <strong>приводит к ошибке?</strong> [#q-14bee738d69b81b48b4cd68225f4772b]

<code>obj&#46;someprop&#46;x</code> приводит к ошибке, если
<code>someprop</code> не существует или имеет значение <code>undefined</code>
или <code>null</code>.

#### Основные причины&#58;

{/* prettier-ignore */}
1. <code>someprop</code> <strong>не существует</strong>&#58;

    - Если <code>someprop</code> не определен в <code>obj</code>, попытка доступа к <code>someprop&#46;x</code> вызовет ошибку.

    - Пример&#58;

        ```javascript
        let obj = {};
        console.log(obj.someprop.x); // Ошибка: Cannot read property 'x' of undefined
        ```

1. <code>someprop</code> <strong>равен</strong> <code>undefined</code> <strong>или</strong> <code>null</code>&#58;

    - Если <code>someprop</code> существует, но имеет значение <code>undefined</code> или <code>null</code>, попытка доступа к <code>someprop&#46;x</code> вызовет ошибку.

    - Пример&#58;

        ```javascript
        let obj = { someprop: null };
        console.log(obj.someprop.x); // Ошибка: Cannot read property 'x' of null
        ```

#### Решение&#58;

Используйте оператор опциональной цепочки <code>&#63;&#46;</code> для безопасного доступа к вложенным свойствам.

```javascript
let obj = {};
console.log(obj.someprop?.x); // undefined, ошибки нет
```

:::note[Ссылки для изучения]

1. [Работа с объектами в JavaScript](https://learn.javascript.ru/object)
   :::

---

## <strong>Что такое прототип объекта?</strong> [#q-14bee738d69b817eab32fd3158329fa9]

<strong>Прототип объекта</strong> — это объект, от которого другие объекты
наследуют свойства и методы.

#### Основные характеристики&#58;

{/* prettier-ignore */}
1. <strong>Наследование</strong>&#58;

    - Объекты могут наследовать свойства и методы от своего прототипа.

    - Пример&#58;

        ```javascript
        let obj = {};
        console.log(obj.toString()); // Метод toString() унаследован от Object.prototype
        ```

1. <strong>Цепочка прототипов</strong>&#58;

    - Объекты могут образовывать цепочки прототипов (prototype chain), что позволяет наследовать свойства и методы по цепочке.

    - Пример&#58;

        ```javascript
        function Person(name) {
            this.name = name;
        }

        Person.prototype.greet = function() {
            console.log("Hello, " + this.name);
        };

        let person = new Person("Alice");
        person.greet(); // "Hello, Alice" - метод greet() унаследован от Person.prototype
        ```

Прототип объекта позволяет наследовать свойства и методы, образуя цепочку прототипов для реализации наследования в JavaScript.

:::note[Ссылки для изучения]

1. [Работа с объектами в JavaScript](https://learn.javascript.ru/object)
   :::
