Es decir, cómo se puede ver en el ejemplo de abajo, el prototipo de todos los objetos dados es de tipo Number, pero si se realiza un:
const obj = 9;
obj instanceof Number // false
sin haberlo pasado por un
new Number(obj) instanceof Number // true
Siempre devolverá false, ejemplos:
var is = Function.prototype.call.bind(Object.prototype.toString);
var log = console.log.bind(console);
const num = 9;
log(typeof(9)); // number
log(is(9)); // [object Number]
log(9 instanceof Number); // false
log('');
log(typeof(num)); // number
log(is(num)); // [object Number]
log(num instanceof Number); // false
log('');
log(typeof(new Number(9))); // object
log(is(new Number(9))); // [object Number]
log(new Number(9) instanceof Number); // true
log('');
log(typeof(new Number(num))); // object
log(is(new Number(num))); // [object Number]
log(new Number(num) instanceof Number); // true
¿Por qué sucede esto?