¿Por qué se sostiene lo siguiente?
let F = function () {}; let f = new F(); console.log(f.__proto__.constructor === F, f.constructor === F); // truePero lo siguiente no:
let F = function () {}; console.log(F.prototype.constructor === F, F.constructor === F); // true false¿Cuál sería entonces el constructor de una declaración de función?
La propiedad .constructor es un objeto al que puede llamar new para crear otro objeto similar.
Es decir, someF.constructor apunta a F, y puede usar new F() para crear someOtherF .
Entonces, si F en sí es lo que desea hacer un tipo de objeto similar, ¿a qué puede llamar para construir una función? Function
let F = function () {}; console.log(F.constructor === Function); En otras palabras, podría usar new Function para crear algo similar a F, una función que puede crear instancias cuando se le llama a new .
(Dicho esto, esto sería extremadamente inusual: el 99% de las veces, las funciones no deberían ser dinámicas; no hay una buena razón para usar new Function )
El constructor de una función es Function .
let F = function () {}; console.log(F.__proto__.constructor === Function, F.constructor === Function); // true false