JavaScript - Сvojstva objekta

Привет, будущие маги JavaScript! Сегодня мы окунаемся в魔法льный мир свойств объектов JavaScript. Как ваш добрый сосед по компьютерным наукам, я здесь, чтобы провести вас через это захватывающее путешествие. Так что возьмите свои виртуальные палочки (клавиатуры) и начнем колдовать код!

JavaScript - Object Properties

Сvojstva objekta v JavaScript

Объекты в JavaScript resemble сундуки с сокровищами - они хранят ценную информацию в виде свойств. Каждое свойство является парой ключ-значение, где ключ resembles метка, а значение - само сокровище. Давайте создадим наш первый объект:

let wizard = {
name: "Harry",
age: 17,
house: "Gryffindor"
};

Здесь мы создали объект wizard с тремя свойствами: name, age, и house. У каждого свойства есть ключ (например, "name") и значение (например, "Harry").

Доступ к свойствам объекта

Теперь, когда у нас есть объект wizard, как мы можем получить доступ к его свойствам? Существует два способа сделать это:

  1. Точечная нотация
  2. Квадратная скобка нотация

Давайте попробуем оба:

// Точечная нотация
console.log(wizard.name);  // Вывод: Harry

// Квадратная скобка нотация
console.log(wizard["house"]);  // Вывод: Gryffindor

Точечная нотация проще и используется чаще. Однако квадратная скобка нотация удобна, когда ваши имена свойств содержат пробелы или специальные символы, или когда вы используете переменную для доступа к свойству.

let property = "age";
console.log(wizard[property]);  // Вывод: 17

Доступ к вложенным свойствам объекта

Иногда объекты могут содержать другие объекты. Это resembles魔法льная матрешка! Давайте расширяем наш объект wizard:

let wizard = {
name: "Harry",
age: 17,
house: "Gryffindor",
wand: {
wood: "Holly",
core: "Phoenix feather",
length: 11
}
};

Чтобы получить доступ к вложенным свойствам, мы просто соединяем нашу точечную или квадратную скобку нотацию:

console.log(wizard.wand.wood);  // Вывод: Holly
console.log(wizard["wand"]["core"]);  // Вывод: Phoenix feather

Добавление или обновление свойств объекта

Объекты в JavaScript могут быть изменены, что означает, что мы можем изменить их после создания. Давайте дадим нашему магу новые способности:

// Добавление нового свойства
wizard.skill = "Quidditch";

// Обновление существующего свойства
wizard.age = 18;

console.log(wizard.skill);  // Вывод: Quidditch
console.log(wizard.age);  // Вывод: 18

Удаление свойств объекта

Иногда нам нужно сделать свойства исчезающими. Для этого мы используем оператор delete:

delete wizard.house;
console.log(wizard.house);  // Вывод: undefined

Вуаля! Свойство "house" исчезло. Помните, что использование delete только удаляет.property из объекта, это не влияет на любые переменные, которые могли удерживать значение этой.property.

Перечисление свойств объекта

Что, если мы хотим увидеть все.properties объекта? Мы можем использовать цикл for...in:

for (let key in wizard) {
console.log(key + ": " + wizard[key]);
}

Это перечислит все перечислимые.properties объекта wizard. Но подождите, есть еще! Мы также можем использовать Object.keys(), Object.values(), или Object.entries(), чтобы получить массивы ключей, значений или и того, и другого объекта:

console.log(Object.keys(wizard));    // Вывод: ["name", "age", "wand", "skill"]
console.log(Object.values(wizard));  // Вывод: ["Harry", 18, {wood: "Holly", core: "Phoenix feather", length: 11}, "Quidditch"]
console.log(Object.entries(wizard)); // Вывод: [["name", "Harry"], ["age", 18], ["wand", {...}], ["skill", "Quidditch"]]

Атрибуты свойства

Каждое.property в JavaScript имеет определенные атрибуты, которые определяют его поведение. Эти атрибуты resemble черты характера.property. Давайте познакомимся с ними:

  1. value: Значение.property (очевидно!)
  2. writable: Можем ли мы изменить значение.property?
  3. enumerable: Должна ли эта.property появляться при перечислении.properties объекта?
  4. configurable: Можем ли мы удалить эту.property или изменить ее атрибуты?

По умолчанию все они установлены в true для.properties, которые мы создаем обычно. Но мы можем изменить их с помощью Object.defineProperty():

Object.defineProperty(wizard, "name", {
writable: false,
enumerable: false
});

wizard.name = "Ron";  // Это не сработает
console.log(wizard.name);  // Вывод: Harry

for (let key in wizard) {
console.log(key);  // "name" не появится здесь
}

Вот таблица, резюмирующая методы.properties, которые мы узнали:

Метод Описание
object.property Доступ к.property с использованием точечной нотации
object["property"] Доступ к.property с использованием квадратной скобки нотации
object.property = value Добавление или обновление.property
delete object.property Удаление.property
for...in Перечисление.properties объекта
Object.keys(object) Получение массива ключей объекта
Object.values(object) Получение массива значений объекта
Object.entries(object) Получение массива [ключ, значение] пар объекта
Object.defineProperty() Определение новой.property или изменение существующей

И вот оно,年轻的 кодировщики! Вы только что完成了 свой ознакомительный курс по.properties объектов JavaScript. Помните, что практика делает мастера, так что продолжайте экспериментировать с этими концепциями. Before you know it, you'll be conjuring complex objects like a true JavaScript sorcerer!

Credits: Image by storyset