He buscado en el sitio esta pregunta y obtuve la siguiente respuesta:
function instance_of(V, F) { var O = F.prototype; V = V.__proto__; while (true) { if (V === null) return false; if (O === V) return true; V = V.__proto__; } }Es de https://stackoverflow.com/a/9220317/12974414 .
Pero probé el siguiente código, encontré algo extraño:
console.log( (10).__proto__ === Number.prototype ) // true console.log( instance_of(10, Number ) ) // true console.log( 10 instanceof Number ) // false function instance_of(V, F) { var O = F.prototype; V = V.__proto__; while (true) { if (V === null) return false; if (O === V) return true; V = V.__proto__; } }¿Cómo explicar esto y cómo funciona realmente el operador instanceof en JS?
JavaScript tiene una función llamada autoboxing que convierte las primitivas en objetos cuando intenta acceder a las propiedades en ellos.
instanceof no autobox y un número primitivo no es una instancia de la clase Number.
Puedes ver, en la especificación :
- Si Tipo(O) no es Objeto, devuelve falso.