Я написал blog post некоторое время назад, в котором подробно описывается, как доступность как примитивных, так и объектных типов значений в JavaScript (для таких вещей, как Number, String и Boolean) вызывает проблемы, включая, помимо прочего, листинг типов для булевых (например, обернутый объектами NaN, "" и false, на самом деле тип-cast для true).Что делает доступность как примитивных, так и объектно-ориентированных значений в JavaScript полезной?
Вопрос, со всем этим путаницей и проблемами, есть ли какая-либо польза для JavaScript, имеющего оба типа значений для встроенных классов?
Редактировать: Спасибо за быстрые ответы. Я думаю, что создатели JavaScript, предназначенные для обернутых туземцев, как способ создания скалярных значений, имеют дочерние методы, но это явно обратное, что вызывает больше проблем.
@ Delan: Первоначально было предпринято большое усилие, чтобы сделать JavaScript удобным для разработчиков, свободно владеющих Java. Возможно, это была одна (безуспешная) попытка достичь этой цели. В качестве одного из примеров того, насколько это плохо получилось: объект 'Boolean' всегда будет оцениваться как истинный, даже если он имеет значение false. –
Я просто рассматриваю их как детали реализации, чтобы предоставить прототипы для литералов. – eyelidlessness