¿Es posible modificar objetos directamente para que puedan crearse con la new palabra clave, o eso solo se aplica a funciones/clases? Como ejemplo:
const bird = { swim() {return 'Swim';}, fly() {return 'Fly';} }; let b1 = Object.create(bird); bird.constructor = function(){console.log('via constructor')}; let b2 = new bird(); No hay un uso práctico de esto, solo estoy aprendiendo cosas y viendo cómo funcionan las cosas new y demás.
No.
Usando new resultados en EvaluateNew siendo llamado, lo cual no
- Si IsConstructor(constructor) es falso, lanza una excepción TypeError.
que hace
- Si el argumento tiene un método interno [[Construct]], devuelve verdadero.
y esa propiedad interna solo está permitida en funciones :
Un constructor es un objeto que admite el método interno [[Construct]]. Todo objeto que admita
[[Construct]]debe admitir[[Call]]; es decir, cada constructor debe ser un objeto de función.