Ответ
Для создания объекта без прототипа можно использовать метод 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). Иначе потом пойдёт пиздец, когда какой-нибудь унаследованный метод внезапно вылезет, где не ждали.