Какие знаешь нативные объекты в JS?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Нативные объекты в 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 задач и составляют основу для построения более сложных структур данных и абстракций.