Работа с объектами
Почему obj.someprop.x приводит к ошибке?
obj.someprop.x приводит к ошибке, если
someprop не существует или имеет значение undefined
или null.
Основные причины:
-
somepropне существует:-
Если
somepropне определен вobj, попытка доступа кsomeprop.xвызовет ошибку. -
Пример:
let obj = {}; console.log(obj.someprop.x); // Ошибка: Cannot read property 'x' of undefined
-
-
somepropравенundefinedилиnull:-
Если
somepropсуществует, но имеет значениеundefinedилиnull, попытка доступа кsomeprop.xвызовет ошибку. -
Пример:
let obj = { someprop: null }; console.log(obj.someprop.x); // Ошибка: Cannot read property 'x' of null
-
Решение:
Используйте оператор опциональной цепочки ?. для безопасного доступа к вложенным свойствам.
let obj = {};
console.log(obj.someprop?.x); // undefined, ошибки нет
Что такое прототип объекта?
Прототип объекта — это объект, от которого другие объекты наследуют свойства и методы.
Основные характеристики:
-
Наследование:
-
Объекты могут наследовать свойства и методы от своего прототипа.
-
Пример:
let obj = {}; console.log(obj.toString()); // Метод toString() унаследован от Object.prototype
-
-
Цепочка прототипов:
-
Объекты могут образовывать цепочки прототипов (prototype chain), что позволяет наследовать свойства и методы по цепочке.
-
Пример:
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.