Какие ключи в объекте в JavaScript

Ответ

В JavaScript объекты состоят из пар ключ: значение. Ключи (или свойства) могут быть:

  1. Строками (наиболее распространённый вариант):
const obj = {
  name: 'John', // ключ - строка 'name'
  age: 30
};
  1. Symbol (уникальные идентификаторы):
const id = Symbol('id');
const obj = {
  [id]: 123 // ключ - Symbol
};
  1. Числа (автоматически преобразуются в строки):
const obj = {
  1: 'one', // станет строкой '1'
  2: 'two'
};

Особенности:

  • Ключи всегда уникальны (если повторить, последнее значение перезапишет предыдущее)
  • Порядок строковых ключей соответствует порядку добавления (ES2015+)
  • Числовые ключи сортируются по возрастанию при перечислении

Ответ 18+ 🔞

А, ну это ж классика, блядь! Объекты в JavaScript — это как твоя старая квартира, где всё разложено по полочкам, но если не следить, то через месяц нихуя не найти.

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

И ключи-то, сука, бывают трёх видов, вот в чём прикол:

1. Строки (самые частые гости, как сосед Алёша, который вечно занимает соль)

const obj = {
  name: 'John', // Ключ — строка 'name', блядь
  age: 30
};

Тут всё просто, как три копейки. Написал name — получил 'John'.

2. Symbol (это как секретный отсек в тумбочке, о котором знаешь только ты)

const id = Symbol('id'); // Создал уникальный символ, его нихуя не спутаешь
const obj = {
  [id]: 123 // И воткнул его как ключ
};

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

3. Числа (а вот тут JavaScript делает финт ушами)

const obj = {
  1: 'one', // Написал цифру 1, а JS про себя думает: «Ага, щас сделаю из тебя строку '1'»
  2: 'two'
};

Выглядит как число, а на деле — строка. Ёпта, обман зрения!

А теперь два важных момента, которые вгоняют в ступор новичков:

  • Ключи уникальны. Это как два мужика по имени Вася в одной камере — один будет главный, второй — в тапки. Если напишешь два одинаковых ключа, выживет последний, а первый — в утиль.
  • Порядок — головная боль. Со строковыми ключами вроде порядок добавления сохраняется (спасибо ES2015+). Но вот если ключи числовые (даже если они в кавычках, как '10'), то JavaScript их, сука, в голове отсортирует по возрастанию, когда ты будешь их перебирать. Вот такая математика, блядь!

Короче, объект — он как живой организм: вроде всё просто, но попробуй не накосячить с этими ключами-значениями.