← Назад к вопросам

Какие знаешь нативные объекты в JS?

2.0 Middle🔥 181 комментариев
#JavaScript Core#Браузер и сетевые технологии

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Нативные объекты в JavaScript

JavaScript предоставляет богатый набор встроенных (нативных) объектов, которые формируют фундамент языка и доступны в глобальной области видимости. Эти объекты можно разделить на несколько категорий.

Фундаментальные объекты

Базовые конструкторы объектов:

// 1. Object - базовый тип всех объектов
const obj = new Object(); // или просто {}
obj.key = 'value';

// 2. Function - конструктор функций
const func = new Function('a', 'b', 'return a + b');

// 3. Boolean - обёртка для логических значений
const bool = new Boolean(true);

// 4. Symbol - уникальные идентификаторы (ES6)
const sym = Symbol('description');

Числа и даты:

// 5. Number - обёртка для числовых значений
const num = new Number(42);
// Статические методы: Number.isNaN(), Number.isFinite()

// 6. Math - математические операции (статический объект)
Math.PI; // 3.141592653589793
Math.random(); // случайное число 0-1

// 7. Date - работа с датами и временем
const now = new Date();
const specificDate = new Date(2024, 0, 1);

Текстовые объекты

Строки и регулярные выражения:

// 8. String - обёртка для строковых значений
const str = new String('Hello');
// Методы: toUpperCase(), slice(), includes()

// 9. RegExp - регулярные выражения
const regex = new RegExp('\\d+', 'g');
// Альтернативный синтаксис: /\d+/g

Коллекции

Структуры данных:

// 10. Array - массивы
const arr = new Array(3); // [empty × 3]
const arr2 = Array.from('abc'); // ['a', 'b', 'c']

// 11. Map - коллекция ключ-значение (ES6)
const map = new Map();
map.set('key', 'value');

// 12. Set - коллекция уникальных значений (ES6)
const set = new Set([1, 2, 3, 3]); // {1, 2, 3}

// 13. WeakMap и WeakSet - аналоги Map/Set со слабыми ссылками
const weakMap = new WeakMap();

Ошибки и управление

Объекты ошибок:

// 14. Error и его наследники
throw new Error('Сообщение об ошибке');
throw new TypeError('Неверный тип');
throw new ReferenceError('Нет переменной');
// Также: SyntaxError, RangeError, URIError, EvalError

Управление асинхронными операциями:

// 15. Promise - асинхронные операции (ES6)
const promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve('Готово!'), 1000);
});

// 16. Прочие объекты для асинхронности
// Proxy - перехват операций (ES6)
const proxy = new Proxy(target, handler);
// Reflect - методы для перехватываемых операций (ES6)

Глобальные объекты

Объекты среды выполнения:

// 17. JSON - работа с JSON форматом
JSON.stringify({a: 1}); // '{"a":1}'
JSON.parse('{"a":1}'); // {a: 1}

// 18. GlobalThis - единый глобальный объект (ES2020)
// В браузере: window, в Node.js: global

Специальные объекты

  • Intl - интернационализация и локализация
  • ArrayBuffer и типизированные массивы для бинарных данных
  • SharedArrayBuffer - разделяемая память
  • Atomics - атомарные операции
  • Iterator и Generator - итераторы и генераторы

Практическое использование и особенности

Важные детали:

  • Большинство нативных объектов можно создавать как с new, так и без (кроме Math и JSON)
  • Обёртки (String, Number, Boolean) обычно создаются неявно при обращении к методам примитивов:
const str = 'hello';
str.toUpperCase(); // Неявно создаётся String-обёртка

Отличия от примитивов:

typeof new String('test'); // 'object'
typeof 'test'; // 'string'

new Boolean(false) ? 'truthy' : 'falsy'; // 'truthy' (объект всегда truthy)
false ? 'truthy' : 'falsy'; // 'falsy'

Эволюция стандартов

Стандарт ECMAScript постоянно расширяет набор нативных объектов:

  • ES5 (2009): JSON, строгий режим
  • ES6 (2015): Map, Set, WeakMap, WeakSet, Promise, Proxy, Reflect
  • ES2016-ES2023: новые методы существующих объектов, Array.prototype.at(), Object.groupBy()

Рекомендации по использованию:

  • Используйте литеральный синтаксис ([], {}, //) когда возможно
  • Для коллекций выбирайте Map/Set вместо объектов при работе с динамическими ключами
  • Используйте Promise для асинхронного кода вместо колбэков
  • Применяйте Intl для локализации вместо ручных реализаций

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