Предыстория: модуль query-string, например, может разобрать key=value&hello=universe
на объект {key: 'value', hello: 'universe'}
. Однако автор модуля решил, что возвращаемый объект не имеет прототипа. Другими словами, этот "ублюдочный" объект создан Object.create(null)
.
Проблема: было бы удобно использовать parsed.hasOwnProperty('hello')
, но это невозможно без прототипа объекта по умолчанию. Конечно, можно было бы Object.prototype.hasOwnProperty.call(parsed, 'hello')
, но я думаю, что мы все можем согласиться с тем, что такое выражение убивает-сразу-после рождения уродливо.
Вопрос: как красиво преобразовать объект без прототипа, чтобы иметь прототип объекта по умолчанию и такие методы, как hasOwnProperty
? Кроме того, можно ли это сделать без использования внушающий страх __proto__
или setPrototypeOf
?