В JavaScript существует три основных категории объектов, которые отличаются своим происхождением и поведением. Рассмотрим каждую из них подробно.
Определение: Объекты, которые являются частью спецификации JavaScript и доступны в любой среде выполнения.
Примеры:
// Встроенные конструкторы
Object, Array, Function, String, Number, Boolean, Date, RegExp, Error
// Встроенные объекты
Math, JSON, Reflect, Proxy
Характеристики:
new
(кроме Math, JSON и др.)Определение: Объекты, предоставляемые средой выполнения (браузером, Node.js и т.д.).
Примеры в браузере:
window, document, XMLHttpRequest, localStorage, console, history
Примеры в Node.js:
global, process, Buffer, require, module, exports
Характеристики:
Определение: Объекты, созданные разработчиком в процессе написания кода.
Примеры:
const user = {
name: 'Alex',
age: 30
};
class Product {
constructor(name) {
this.name = name;
}
}
const laptop = new Product('Laptop');
Характеристики:
Тип | Поднимается? | Инициализируется при поднятии |
---|---|---|
var | Да | undefined |
let /const | Да | Не инициализируется |
Function Declaration | Да | Полностью |
Function Expression | Нет | - |
console.log([] instanceof Array); // true (встроенный)
console.log(document instanceof HTMLDocument); // true (хост)
console.log(user instanceof Object); // true (пользовательский)
// Можно расширить встроенные объекты (но не рекомендуется)
Array.prototype.customMethod = function() {};
// Хост-объекты могут не поддерживать расширение
document.customMethod = function() {}; // Может не работать
Кросс-браузерная совместимость:
Безопасность:
Производительность:
Встроенные объекты - часть языка, хост-объекты зависят от окружения, а пользовательские создаются разработчиком. Понимание этих различий важно для написания надежного и переносимого кода, особенно при работе с разными средами выполнения JavaScript.