Um exemplo é melhor do que mil palavras.
new Number(10) == 10 // true
new Number(10) === 10 // false
O que está acontecendo? Você está comparando um object
a um valor primitivo. Isso se deve ao uso da palavra-chavenew
typeof Number(10) // returns number
typeof 10 // returns number
typeof new Number(10) // returns object
Este é um erro comum para pessoas que pensam que tudo em Javascript é um objeto * e usam a new
palavra descuidadamente.
- (Espere, não é? Então por que eu posso fazer (10) .toString ()? Javascript “quebra” valores primitivos em “objetos complexos” quando você usa métodos com eles, mas depois os desembrulha depois de terminar, retornando-os ao seu não -valores do objeto)