Extensión de función con clases ES6
En ES6, los objetos especiales se pueden extender, permitiendo la herencia del objeto Función. Si bien es posible llamar a dichos objetos como funciones, implementar la lógica para esta llamada puede ser un desafío.
Pasar datos de instancia a una llamada de función
Al llamar a una clase como una función , esto se refiere al objeto de ventana. Para acceder a los datos de la instancia, hay dos enfoques disponibles:
class Smth extends Function { constructor(x) { super("return " JSON.stringify(x) ";"); } }
class Smth extends Function { constructor(x) { function smth() { return x; }; Object.setPrototypeOf(smth, Smth.prototype); return smth; } }
Resumen de la extensión de función
Un enfoque más generalizado es crear una clase ExtensibleFunction que maneje la extensión:
class ExtensibleFunction extends Function { constructor(f) { return Object.setPrototypeOf(f, new.target.prototype); } }
Esta clase se puede usar para extender clases específicas:
class Smth extends ExtensibleFunction { constructor(x) { super(() => { return x; }); // closure } }
En resumen, extender Function con clases ES6 permite heredar el comportamiento de la función mientras se personaliza la lógica de llamada. Se pueden utilizar diferentes enfoques para proporcionar acceso a los datos de la instancia al llamar a la función extendida.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3