Какое практическое использование является булевым объектом в Javascript?

Учитывая, что в JavaScript

console.log("var F=new Boolean(false)")
console.log("( F != (F==false))",(( F != (F==false)) ? "TRUE" : "false"));
console.log("(!F != (F==false))",((!F != (F==false)) ? "TRUE" : "false"));

печатает:

( F != (F==false)) TRUE
(!F != (F==false)) TRUE

что означает, что булевы объекты не являются dop-in заменяет булевский примитив в типичных условиях, таких как:

if(someBoolean) ...  // always true
if(!someBoolean) ... // always false

И что коллекции JavaScript Set и Map допускают любой тип, включая примитивы.

В чем используются булевы объекты, в частности; и объекты, представляющие другие примитивные типы в целом, так как они имеют всевозможные странности в связанных с ними связях?

Примечание. Я специально спрашиваю , какие используются прецеденты (если есть), а не , как они отличаются от их примитивных копий.

Ответ 1

Булевы объекты - это просто объекты и, следовательно, являются правдивыми.

console.log(!!new Boolean(true)); // true
console.log(!!new Boolean(false)); // true

Ответ 2

Скажем, у нас есть...

var F = new Boolean(); 
var f = false;

Где F - объект, а f - примитив .

Объекты передаются по ссылке. Примитивы передаются по значению.

Каким бы ни был тип объекта, он всегда сохраняет свою индивидуальность; идентичность. Он ведет себя как реальный (материальный) объект, беря свое собственное уникальное пространство во Вселенной.

Поэтому...

var Fn = new Boolean(); 

не является "равным" F, даже если сравнивать с оператором динамического типа "==", хотя они одинакового типа и имеют одно и то же значение:

Fn == F; 
>> false

Это потому, что (как уже подчеркивалось), это два отдельных и разных объекта, которые несут элементы того же значения, т.е. false. Это, тем не менее, не то же самое false.

И потому, что нет преобразования типов (поскольку они уже одного типа уже), они будут сравниваться по ссылке - которые, очевидно, указывают на два отдельных объекта, означает: они не совпадают объект!

Мы должны представить наши объекты JavaScript данного типа в виде пакетов, специально предназначенных для переноса определенного типа ценностей. Этот способ мышления значительно облегчит понимание даже самых неожиданных результатов нашей работы. И вот почему null красив.

Пример использования практического значения (было бы), что определенный логический объект может нести оба значения, но оставаться тем же (идентифицируемым) объектом. Увы, объект Boolean оставлен в исходном состоянии ввода в JavaScript-разработке. И теперь практически бесполезен и может быть использован только для определения того, что это ложное: истинное значение происходит от другого процесса и возврата, чем тот, который вы его тоже сравниваете.

С уважением.