Как создать объект без прототипа

Ответ

Для создания объекта без прототипа можно использовать метод Object.create(null). Это создаст пустой объект, который не наследует никаких свойств и методов от Object.prototype, таких как toString, hasOwnProperty и других.

const obj = Object.create(null);
console.log(obj.toString); // undefined

Альтернативно можно использовать {}, но у такого объекта будет прототип Object.prototype:

const objWithProto = {};
console.log(objWithProto.toString); // function toString() { [native code] }

Используйте Object.create(null) для чистых объектов, например, когда нужен словарь без унаследованных методов.

Ответ 18+ 🔞

Ну слушай, вот есть такая штука, блядь — Object.create(null). Это ж как чистый лист, ёпта! Создаёшь объект, а у него нихуя нет в наследство, ни toString, ни hasOwnProperty, ни прочей хуйни из Object.prototype. Полный вакуум, идеальный словарь!

const obj = Object.create(null);
console.log(obj.toString); // undefined

А то ведь обычно, сука, делаешь {} и думаешь — ну вот, объект. Ан нет, блядь! Он тебе сразу с багажом: прототип Object.prototype прицеплен, как гиря на ноге.

const objWithProto = {};
console.log(objWithProto.toString); // function toString() { [native code] }

Так что если тебе нужен объект, чтоб прям чисто под ключи-значения, без этих ебушки-воробушки наследуемых методов — твой путь Object.create(null). Иначе потом пойдёт пиздец, когда какой-нибудь унаследованный метод внезапно вылезет, где не ждали.